您的位置:首页 > 软件设计 > 软件架构 > 正文

跨站请求伪造的几个解决方法

更多 时间:2016-10-7 类别:软件设计 浏览量:2291

跨站请求伪造的几个解决方法

跨站请求伪造的几个解决方法

一、跨站请求伪造(CSRF)能干嘛?

CSRF攻击者可以盗用你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

 

二、跨站请求伪造(CSRF)攻击特性

1、依靠用户标识危害网站
2、利用网站对用户标识的信任
3、欺骗用户的浏览器发送HTTP请求给目标站点
4、另外可以通过IMG标签会触发一个GET请求,可以利用它来实现CSRF攻击。

 

三、跨站请求伪造(CSRF)攻击原理

 

即:

1、用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;

2、在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;

3、用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;

4、网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;

5、浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

 

四、跨站请求伪造的几个解决方法

 

1、token参数验证

每个请求都带上一个由服务器生成的随机参数(例如:token验证),然后在服务器端和对该参数,如果和下发的随机数不同,则可以认为有人在伪造请求。

2、验证HTTP Referer字段

根据HTTP协议,在HTTP头中有一个字段叫Referer,它记录了该HTTP请求的来源地址。在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站。

3、在HTTP头中自定义属性并验证

自定义属性的方法也是使用token并进行验证,和token参数方法不同的是,这里并不是把token以参数的形式置于HTTP请求之中,而是把它放到HTTP头中自定义的属性里。通过XMLHttpRequest这个类,可以一次性给所有该类请求加上csrftoken这个HTTP头属性,并把token值放入其中。这样解决了前一种方法在请求中加入token的不便,同时,通过这个类请求的地址不会被记录到浏览器的地址栏,也不用担心token会通过Referer泄露到其他网站。

4、及时清除认证cookie

CSRF攻击是有条件的,当用户访问恶意链接时,认证的cookie仍然有效,所以当用户关闭页面时要及时清除认证cookie,对支持TAB模式(新标签打开网页)的浏览器尤为重要。

 

标签:Web编程