CSRF的全名是Cross Site Request Forgery,翻译成中文就是跨站点请求伪造
CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任
例如现在有一个网站,只需要请求这个URL,就能够把编号为“156713012”的博客文章删除。
http://blog.sohu.com/manage/entry.do? m=delete&id=156713012
攻击者首先在自己的域构造一个页面:
其内容为:
<img src="http://blog.sohu.com/manage/entry.do? m=delete&id=156714243" />
攻击者诱使目标用户访问这个页面,从而执行CSRF攻击
该用户看到了一张无法显示的图片,但是不幸的式此时该用户的博客已经被删除
回顾整个攻击过程,攻击者仅仅诱使用户访问了一个页面,就以该用户身份在第三方站点里执行了一次操作。
这个删除博客文章的请求,是攻击者所伪造的,所以这种攻击就叫做“跨站点请求伪造”。
CSRF漏洞的根本是:简单的身份验证只能保证请求是发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的💄
浏览器所持有的Cookie分为两种:一种是“Session Cookie”,又称“临时Cookie”;另一种是“Third-party Cookie”,也称为“本地Cookie”。
两者的区别在于,Third-party Cookie是服务器在Set-Cookie时指定了Expire时间,只有到了Expire时间后Cookie才会失效,所以这种Cookie会保存在本地;而Session Cookie则没有指定Expire时间,所以浏览器关闭后,Session Cookie就失效了。
例如:
php
header("Set-Cookie: cookie1=123; ");
header("Set-Cookie: cookie2=456; expires=Thu, 01-Jan-2030 00:00:01 GMT; ", false);
?>
IE出于安全考虑,默认禁止了浏览器在
、