常见的攻击手段--CSRF

假设某银行网站A,他以GET请求来发起转帐操做,转帐的地址为www.xxx.com/transfer.do?
accountNum=10001&money=10000,accountNum参数表示转帐的目的帐户,money参数表
示转帐金额。
而某大型论坛B上,一个恶意用户上传了一张图片,而图片的地址栏中填的并非图片的地
址,而是前面所说的转帐地址:
<img src= "http://www.xxx.com/transfer.do?accountNum=10001&money=10000" >
当你登录网站A后,没有及时登出,这个时候你访问了论坛B,不幸的事情发生了,你会发
现你的帐户里面少了10000块……
为何会这样呢,在你登录银行A的时候,你的浏览器端会生成银行A的cookie,而当你访
问论坛B的时候,页面上的<img>标签须要浏览器发起一个新的HTTP请求,以得到图片资源,
当浏览器发起请求的时候,请求的倒是银行A的转帐地址www.xxx.com/transfer.do?accoun
tNum=10001&money=10000,而且会带上银行A的cookie信息,结果银行的服务器收到这
个请求后,会认为是你发起的一次转帐操做,所以你的帐户里边便少了10000块。浏览器

常见的攻击手段—CSRF的防护安全

1.cookie设置为HttpOnly
CSRF攻击很大程度上是利用了浏览器的cookie,为了防止站内的XSS漏洞盗取cookie,须要
在cookie中设置"HttpOnly"属性,这样经过程序(如JavascriptS脚本、Applet等)就没法读
取到cookie信息,避免了攻击者伪造cookie的状况出现。
2.增长token
CSRF攻击之因此可以成功,是由于攻击者能够伪造用户的请求,该请求中全部的用户验证
信息都存在于cookie中,所以攻击者能够在不知道用户验证信息的状况下直接利用用户的
cookie来经过安全验证。由此可知,抵御CSRF攻击的关键在于:在请求中放入攻击者所不
能伪造的信息,而且该信息不存在于cookie之中。鉴于此,系统开发人员能够在HTTP请求
中以参数的形式加入一个随机产生的token,并在服务端进行token校验,若是请求中没有
token或者token内容不正确,则认为是CSRF攻击而拒绝该请求。服务器

3.经过Referer识别
根据HTTP协议,在HTTP头中有一个字段叫Referer,它记录了该HTTP请求的来源地址。在一般
状况下,访问一个安全受限页面的请求都来自于同一个网站。好比某银行的转帐是经过用户访
问http://www.xxx.com/transfer.do页面完成,用户必须先登陆www.xxx.com,而后经过点击
页面上的提交按钮来触发转帐事件。当用户提交请求时,该转帐请求的Referer值就会是提交
按钮所在页面的URL(本例为www.xxx.com/transfer.do)。若是攻击者要对银行网站实施CSRF
攻击,他只能在其余的网站构造请求,当用户经过其余网站发送请求到银行时,该请求的
Referer的值是其余网站的地址,而不是银行转帐页面的地址。
所以,要防护CSRF攻击,银行网站只须要对于每个转帐请求验证其Referer值,若是是以
www.xxx.com域名开头的地址,则说明该请求是来自银行网站本身的请求,是合法的。若是
Referer是其余网站的话,就有多是CSRF攻击,则拒绝该请求。cookie

相关文章
相关标签/搜索