1、CSRF(Cross Site Request Forgery,跨站点请求伪造)是攻击者利用用户的身份操作用户账户的一种攻击方式,攻击者伪造请求,是建立在会话之上的。本质原因是重要操作的所有参数都是可以被攻击者猜到的。
2、CSRF攻击是黑客借助受害者的Cookie骗取服务器的信任,但是黑客并不能获取到Cookie,也看不到Cookie的内容。
2、浏览器的Cookie有两种,分为Session Cookie(临时Cookie)和Third-party Cookie(本地Cookie),浏览器为Third-party Cookie指定了Expire时间,只有到时间后Cookie才会失效,Cookie被保存在本地,Session Cookie没有Expire时间,浏览器关闭后就会失效,在浏览器进程的生命周期内,即使浏览器新打开了Tab页,也是有效的。如果浏览器从一个域页面中,要加载另一个域资源,某些浏览器会阻止Third-party Cookie发送。
3、如果网站返回给浏览器的http头中包含有P3P头,则在某种程度上,将允许发送第三方Cookie。
4、大多数CSRF攻击发起时,使用的HTML标签都是<img>,<iframe>,<script>等带“src”属性的标签。
5、CSRF防御:(1)验证码。该攻击往往是在用户不知情时构造网络请求,验证码会强制用户必须与应用进行交互。(2)Referer Check。被用于检查请求是否来自合法的源,缺陷在于,服务器并非什么时候都能取到referer。(3)Anti CSRF Token。Token是随机的,作为一个“秘密”,为用户与服务器所共同持有,不被第三者知晓。如果同时存在XSS、CSRF漏洞,Token机制将会失效,攻击者可以通过JavaScript获取Token值。