一、前言
跨站点请求伪造(Cross-SiteRequest Forgeries, CSRF),是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击;有如下危害:
1、利用已通过认证的用户权限更新设定信息;
2、利用已通过认证的用户权限购买商品,虚拟货币转账;
3、利用已通过认证的用户权限在留言板发表言论;
二、攻击原理:
第一步:验证用户访问存在CSRF漏洞的网站A,网站A会给用户返回cookie,以便后面可以免登陆;
第二步:此时用户在同一浏览器打开一个有而已攻击代码的网站B,网站B返回一些攻击的代码,这些代码要求请求A网站;
第三步:浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据该验证用户的cookie信息以及权限处理该请求;
三、浏览器的cookie策略
上面讲到,网站B之所以能够通过网站A的验证,是因为B网站成功发送cookie的缘故。浏览器的cookie分为两种,一种是临时cookie,叫Seesion Cooie;另一种是'Third-party Cookie',也称‘本地cookie’。两者区别是在于,Third-party Cookie是服务器在Set-Cookie时指定的Expireid时间,只有到了Expire时间后Cookie才会失效,所以这种Cooki会保存在本地;而Session Cookie则没有Expire时间