CRSF全称 Cross Site Request Forgery,跨站请求伪造。通俗理解:攻击者盗用当前用户身份,发请当前用户的恶意请求:如邮件,银行转账等。
[size=large][b]CRSF原理[/b][/size]
[img]http://dl.iteye.com/upload/attachment/0083/2540/56522834-5e30-3599-8911-4be4a7564ece.jpg[/img]
[size=large][b]CRSF过程[/b][/size]
登录网站A,生成本地Cookie信息;登录危险网站B,B获取网站A的内容,并向A发送请求操作,若成功,则CRSF过程成功。其中登录B网站,行为可以是点击网站A中的链接链接。
[size=large][b]CRSF攻击实践[/b][/size]
1.若网站A通过GET方式访问银行(假设)完成转账:http://www.bank.com/transfer.php?toBankId=3206&money=1000。如果是通过GET方式访问,授权信息存储在cookie中。
2.B页面中生成img标签,src设置为A页面中的转账链接:http://www.bank.com/transfer.php?toBankId=3206&money=1000,但toBankId改成黑客的的账号,因为登录信息在cookie中,在chrome,firefox等多页签浏览器中,同域名请求可以带上同域名的cookie内容
[size=large][b]预防措施[/b][/size]
1.随机参数
攻击者不能获得第三方的Cookie(理论上),A页面使用加密随机参数,在同一个会话范围内使用同一个加密随机参数,如md5("defenseSCRF" + new Date().getTime() + 3600),在第个请求中加入随机参数。
后台校验:getSession().get("stoken_name") == $pToken
2.验证码
参考:http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html
[size=large][b]CRSF原理[/b][/size]
[img]http://dl.iteye.com/upload/attachment/0083/2540/56522834-5e30-3599-8911-4be4a7564ece.jpg[/img]
[size=large][b]CRSF过程[/b][/size]
登录网站A,生成本地Cookie信息;登录危险网站B,B获取网站A的内容,并向A发送请求操作,若成功,则CRSF过程成功。其中登录B网站,行为可以是点击网站A中的链接链接。
[size=large][b]CRSF攻击实践[/b][/size]
1.若网站A通过GET方式访问银行(假设)完成转账:http://www.bank.com/transfer.php?toBankId=3206&money=1000。如果是通过GET方式访问,授权信息存储在cookie中。
2.B页面中生成img标签,src设置为A页面中的转账链接:http://www.bank.com/transfer.php?toBankId=3206&money=1000,但toBankId改成黑客的的账号,因为登录信息在cookie中,在chrome,firefox等多页签浏览器中,同域名请求可以带上同域名的cookie内容
[size=large][b]预防措施[/b][/size]
1.随机参数
攻击者不能获得第三方的Cookie(理论上),A页面使用加密随机参数,在同一个会话范围内使用同一个加密随机参数,如md5("defenseSCRF" + new Date().getTime() + 3600),在第个请求中加入随机参数。
后台校验:getSession().get("stoken_name") == $pToken
2.验证码
参考:http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html