CSRF的全名为Cross-site request forgery,它的中文名为 跨站请求伪造(伪造跨站请求【这样读顺口一点】)
CSRF是一种夹持用户在已经登陆的web应用程序上执行非本意的操作的攻击方式。相比于XSS,CSRF是利用了系统对页面浏览器的信任,XSS则利用了系统对用户的信任。
由上图分析我们可以知道构成CSRF攻击是有条件的:
1、客户端必须一个网站并生成cookie凭证存储在浏览器中
2、该cookie没有清除,客户端又tab一个页面进行访问别的网站
假设某游戏网站的虚拟币转账是采用GET方式进行操作的,样式如:
1 http://www.game.com/Transfer.php?toUserId=11&vMoney=1000
此时恶意攻击者的网站也构建一个相似的链接:
1、可以是采用图片隐藏,页面一打开就自动进行访问第三方文章:<img src='攻击链接'>
2、也可以采用js进行相应的操作
http://www.game.com/Transfer.php?toUserId=20&vMoney=1000 #toUserID为攻击的账号ID
1、假若客户端已经验证并登陆www.game.com网站,此时客户端浏览器保存了游戏网站的验证cookie
2、客户端再tab另一个页面进行访问恶意攻击者的网站,并从恶意攻击者的网站构造的链接来访问游戏网站
3、浏览器将会携带该游戏网站的cookie进行访问,刷一下就没了1000游戏虚拟币
游戏网站负责人认识到了有被攻击的漏洞,将进行升级改进。
将由链接GET提交数据改成了表单提交数据
//提交数据表单
<form action="./Transfer.php" method="POST"> <p>toUserId: <input type="text" name="toUserId" /</p> <p