web 安全问题:CSRF 攻击

Posted 兵之诡道者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web 安全问题:CSRF 攻击相关的知识,希望对你有一定的参考价值。

CSRF 文件名为:Cross Site Request F

什么是CSRF
CSRF是怎么产生的
CSRF的攻击对象
CSRG的攻击手段
CSRF的防御措施

什么是CSRF

全称是(Cross Site Request Forgery)跨站请求伪造。也就是恶意网站伪装成用户向目标网站服务器发送请求,骗取服务器执行请求中的命令,直接在服务器改变数据值的一种攻击手段。

CSRF是怎么产生的

用户需要获取操作的权限,目标网站服务器会要求一次验证,通常都是一次账号密码登录。服务器验证通过之后,会在浏览器写一个会话ID,来标识用户的身份。这是一种隐式验证的方法,用户只要验证一次获取到会话ID之后,在一段时间内的操作是不需要再次验证的。但服务器只能判断请求是来源于这个授权过的浏览器,而不能判断请求是否是用户发起或者是用户授权的。所以当恶意网站给服务器发起带有命令的授权请求时,就可以改变服务器中的数据值。

CSRF的攻击对象

CSRF的攻击对象也就是我们要保护的对象。CSRF利用的是授权浏览器向目标网站服务器发送任何请求时,都会自动带上会话ID或者cookie进行身份验证。但是由于浏览器同源策略的限制,恶意网站无法看到目标网站的cookie或者回话ID,也没有办法解析返回的内容,所以恶意所能做的就是给服务器发送请求,以执行请求中所描述的命令,在服务器端直接改变数据的值,而非窃取服务器中的数据

CSRF的攻击手段

  1. 利用img标签,发起get请求

    <img src="http://www.target.com/order/pay?money=10000&to=34j34">
  2. 利用iframe和javascipt发起post请求

    <iframe name="steal" style="display: none;"></iframe>
    <form method="post" action="http:www.xxxx.com/trading/product/addCartProduct" name="transfer" target="steal">
            <input type="hidden" name="id" value="b21a59eaa7e604b44fe8a3bf">
            <input type="hidden" name="money" value="1000">
    <input type="submit" value="提交">
          
    </form>
    window.onload=function(){
    function steal()
    {
      var iframe = window.frames[‘steal‘].document;
      var form = document.getElementsByTagName(‘form‘)[0];
      form.submit();
    }
    steal();
    }

CSRF的防御措施

1. 涉及到数据更改的操作服务器严格使用post请求而不是get请求
2. 验证HTTP Referer 字段
根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。恶意网站只能在他自己的网站伪造请求,所以验证referer应该是可以过滤掉CSRF攻击的。但是使用Rerferer值,就相当于把安全性交给了第三方,浏览器实现referer的方式不能保证没有漏洞。据说IE6是可以修改referer的值的。另外referer会记录下用户的访问来源,有些用户会觉得是侵犯了其隐私,而且用户是可以设置使用浏览器时不再提供referer的。(所以说这种方法虽然简单但是不可靠)
3. 在请求地址中添加token
CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求。
4. HTTP头自定义属性验证
这个是token验证的变种,可以利用 XMLHttpRequest 这个类,一次性给ajax请求加上 特定的 HTTP 头属性,并把 token 值放入其中。
5 显式验证,添加验证码验证,密码验证等。
CSRF 攻击之所以能够成功,也是由于隐式验证,服务器无法判断请求真实地由用户发起和用户授权的。

总的来说,CSRF防御没有十全十美的方法,只有适合的方法。
【TODO】
web安全,是一个很重要的技能,所以打算相关的东西写一个系列:
web安全二:XSS 攻击
web安全三:同源策略
web安全四:跨域请求
参考



















以上是关于web 安全问题:CSRF 攻击的主要内容,如果未能解决你的问题,请参考以下文章

Web安全之CSRF攻击

安全漏洞XSS、CSRF、SQL注入以及DDOS攻击

web安全CSRF和XSS

Web安全CSRF攻击与防御

Web安全之CSRF攻击

【WEB安全】防止CSRF攻击