1.1 什么是CSRF?
跨站请求伪造(Cross-Site Request Forgery,CSRF)是一种使已登录用户在不知情
的情况下执行某种动作的攻击。因为攻击者看不到伪造请求的响应结果,所以CSRF
攻击主要用来执行动作,而非窃取用户数据。当受害者是一个普通用户时,CSRF可
以实现在其不知情的情况下转移用户资金、发送邮件等操作;但是如果受害者是一个
具有管理员权限的用户时CSRF则可能威胁到整个Web系统的安全。
1.2 攻击场景及形成原因
攻击场景:
1.后台添加管理员
2.转账
3.一些设置(绑定邮箱,手机)
4.用户对其资料的增删查改等
所有敏感操作都有可能成为攻击发生的场景
成因:错把“经过认证的浏览器发起的请求”当成“经过认证的用户发起的请求”,当已认证的用
户点击攻击者构造的恶意链接后就“被”执行了相应的操作。
1.3 CSRF有什么危害性?
攻击者能够欺骗受害用户完成该受害者所允许的任一状态改变的操作,比如:更新账
号细节,完成购物,注销甚至登陆等操作
分类:
GET型与POST型CSRF
GET型与POST型CSRF主要取决于相应操作对提交方式的限制,其原理都是事先构
造出一个恶意的请求,然后诱导用户点击或访问,从而假借用户身份完成相应的操
作。另外,有些POST型CSRF也可能会利用javascript进行自动提交表单完成操
作。
Flash CSRF
Flash CSRF通常是由于Crossdomain.xml文件配置不当造成的,利用方法是使用
swf来发起跨站请求伪造,如:Flash跨域权限管理文件设置为允许所有主机/域名跨域对本站进行读写数据:
1.This XML file does not appear to have any style information associated with it.
The document tree is shown below.
domain="*"/>
Flash跨域权限管理文件过滤规则不严(domain=”*”),导致可以从其它任何域传Flash产生
CSRF。
CSRF蠕虫
CSRF常见的危害是攻击者可以在用户不知情的情况下以用户的身份进行指定的操作,但实际
上CSRF的危害远不止于此,经过特意构造的CSRF可以产生蠕虫的效果。如:某社区私信好
友的接口和获取好友列表的接口都存在CSRF漏洞,攻击者就可以将其组合成一个CSRF蠕虫
——当一个用户访问恶意页面后通过CSRF获取其好友列表信息,然后再利用私信好友的
CSRF漏洞给其每个好友发送一条指向恶意页面的信息,只要有人查看这个信息里的链接,
CSRF蠕虫就会不断传播下去,其可能造成的危害和影响非常巨大!
1.4 如何防御?
1、检测HTTP header中的referer字段。服务器可以查看referer是否为自己的站点,如果不是则拒绝服务。
2、在重要请求中的每一个URL和所有的表单中添加token
