一 CSRF
攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法.
二 CSRF进阶
1浏览器的cookie策略
浏览器所支持的cookie分为两种,一种session cookie,又称为临时cookie;另一种是third-party cookie也称为本地cookie。两者区别为本地cookie是服务器在set-cookie时制定了expire时间,只有到了expire时间才会失效。而session-cookie在浏览器关闭后才会失效。
不同浏览器支持的默认允许不一样。
2 p3p头的副作用
尽管有些csrf攻击实施起来不需要认证,不需要发送cookie,但是不可否认的是,大部分敏感或者重要的操作躲在认证之后,因此浏览器拦截了第三方cookie的发送,在某种程度上降低了危害。但是在P3P介入之后,变得复杂。
如果网站返回的浏览器的http 头含有P3P头,某种程度上会允许浏览器发送本地cookie。在网站的业务中,P3P主要用于类似广告等需要跨域访问的页面。但是遗憾的是,设置后,对于cookie的影响将扩大到整个域的页面,因为cookie是以域和path为单位,这不符合最小权限原则。
3get和post都可以发起csrf攻击。
4Flash CSRF
5CSRF Worm
三CSRF的防御
1验证码
2referer check
它主要在互联网中常用于防止图片盗链,同理他可以用于检查请求是否来自合法的源。如果referer的值不是这个页面的,甚至不是发帖网站的域,则极有可能是CSRF攻击。
限制在于服务器并非什么时候都能得到referer.
3 anti csrf token
被攻击的本质是因为重要的操作所有参数都可以被攻击者猜测到。
如果给参数加密,后来再数据分析,工作量大。所以保证原参数不变,新增一个参数token,这个值是随机的,不可预测的。
token应该作为一个秘密,为用户与服务器所共同持有,不能被第三方知晓,在实际应用中,token可以放在用户的session中,或者浏览器的cookie中。由于token的存在,攻击者无法构造一个完整的URL实施攻击。
注意,token只用于对抗CSRF的攻击,当网站存在XSS漏洞,这个方案就变得无效。