web安全————CSRF(攻击篇)

     跨站请求伪造(CSRF)
     首先先来看一个实例:当用户在某个论坛上删除某篇文章时,通过抓包获取请求如下:
     http://blog.sohu.com/manage/entry.do?m=delete&id=12345678。用户登录后cookie为有效状态下,服务器接受到上述请求将会当作一次更新操作执行。为了完成CSFR攻击,攻击者需要构造一个页面:http://www.a.com/csrf.html。该页面的内容为:这个img标签地址是指向删除文章,攻击者只需诱使用户访问该页面即可发送伪造用户请求,达到攻击目的。


     攻击者之所以攻击成功,是因为用户的浏览器成功的发送了cookie,那么我们就来看看浏览器的cookie策略:
     浏览器所持有的cookie分为两种:一种是“session cookie”(临时cookie),一种是“third-party cookie(本地cookie)”。区别在于third-party cookie是服务器在set-cookie时指定expire时间,只有expire时间到了cookie才会失效,而session cookie没有该时间,只要浏览器关闭后就会失效。就是说session cookie是保存在浏览器进程的内存空间,而third-party cookie是保存在本地。通常情况下,浏览器从一个域加载另一个域的资源时,出于安全考虑,浏览器会阻止third-party cookie的发送。


     尽管浏览器有阻止发送第三方cookie的功能,降低了CSRF攻击,但P3P的出现,使情况变得复杂起来。P3P(the plamform for privacy prefer-ences)是一个个人隐私安全平台项目的标准,能够保护在线隐私权,使用户可以选择浏览网页时是否允许第三方收集并利用自己的个人信息。对于不遵循P3P标准的,有关它的cookie将被自动拒绝。也就是说,如果网站返回给浏览器的HTTP头中包含P3P头,那么将有可能允许浏览器发送第三方cookie。目前P3P广泛应用于网站应用,因此不能依赖浏览器拦截第三方cookie来防御CSRF。同时,如果在测试CSRF时发现