1)篡改目标网站上的用户数据
2)盗取用户隐私数据
3)作为其他攻击的辅助手法
4)传播CSRF蠕虫
例如某个社交网站爆出的漏洞,让某个用户查看恶意页面后,给他所有好友发送短信,短信中又包含了这个恶意页面;
好友点击的话,又会给他的好友发送短信,这样就开始了传播,受感染的人也将越来越多。
CSRF蠕虫的原理和XSS蠕虫基本类似,但也略有不同:
1. CSRF的攻击代码存在于攻击者页面中,目标网站传播的内容都包含攻击者页面的URL。还有前提,目标用户登录了目标网站,之后的传播需要带上目标用户的“Session Cookie”。
2. XSS的攻击代码存在于目标页面中,即使是Script从攻击域上引进来的,对JavaScript上下文来说,也属于目标网站。
1)验证码
CSRF的过程,往往是在用户不知情的请求下发起了网络请求;
而加了验证码,就让用户必须与应用进行交互,才能完成最终请求,能够遏制CSRF的攻击。
但是加了验证码后,在用户体验上面会大打折扣,所以要因地制宜。
2)Referer Check
Referer Check常用于“防止图片盗链”,同理,也可以检查请求是否来自合法的“源”。
但Referer Check有缺陷,服务器并非任何时候都能取到Referer,例如HTTPS跳转到HTTP,就不会发送。
3)Anti CSRF Token
在每个请求中增加一个Token参数,这个Token是个随机数,为用户和服务器共同持有,不能被第三者知晓。
Token可放在用户的Session或Cookie中,为了使用方便,还可设置一个生命周期
在提交请求的时候,服务器只需验证表单中的Token和Session(或Cookie)中的Token是否一致即可遏制CSRF攻击。
但在XSS的攻击下,Token会无效,因为XSS可以模拟客户端浏览器执行任意操作,那就可以读取出Token,再构造一个合法的请求,这个过程称为XSRF。
demo代码下载:
参考资料:
来源: