zoukankan      html  css  js  c++  java
  • CSRF攻击

    什么是CSRF?

      CSRF(Cross Site Request Forgery 跨站域请求伪造),是一种对网站的恶意利用,他通过伪装来自受信任用户的请求来利用受信任的网站,与XSS攻击相比,CSRF不大流行且难以防范。

      CSRF能够做到:以你的名义发送邮件、发消息、盗用账号、购买商品、转账等等。

      造成的问题包括:个人隐私泄露和财产安全。

      原理

       由上可知,要完成一次CSRF攻击,必须满足两个条件

    • 登录受信任的网站A,并在本地生成cookie
    • 在不登出A的情况下访问危险网站B(关闭浏览器本地cookie不一定会过期)

       

    GET类型的CSRF

      get类型的CSRF一般这样利用,用户在访问了含有这个<img src=http://wooyun.org/csrf?xx=11 />的页面后,成功向wooyun网站发出了一次http请求,如果该网址为存在get型的CSRF地址,则完成了攻击。

    POST类型的CSRF

      post类型的CSRF通常使用一个自动提交的表单,访问该页面后,表单自动提交,相当于模拟用户完成一次post操作。如下

    <form action=http://wooyun.org/csrf.php method=POST>
    <input type="text" name="xx" value="11" />
    </form>
    <script> document.forms[0].submit(); </script>

    如何防御CSRF?

    • 验证HTTP Referer字段

       http头中有个referer字段,记录了该http请求的来源地址。如果存在安全网站A,攻击网站B。A限制了在访问A的时候必须要先访问C网站(如登录验证),即A只有在referer字段值为C域名才可放行,用户再打开B网站时,对A发起了一次CSRF攻击,A识别到referer是B域名,则可拒绝请求。

      缺点:此方法需要依赖浏览器来保障,某些浏览器(IE6、FF2)可支持篡改referer值。

    • 在请求地址中添加token并验证

      在http请求中以参数形式加上一个token,并在服务端验证这个token,如果请求中没有token或token不正确,则可以认为是CSRF攻击而拒绝该请求。这个方法比检查referer安全。

      缺点:黑客网站可以通过referer来得到这个token值发起csrf攻击。

    • 在http头中自定义属性并验证

      不再将token放在http的请求参数中,而将token放至自定义的http头中。

      缺点:此方法需要通过XMLHttpRequest请求,如果没有进行CSRF防御的遗留系统如果要用此方法,需要改写整个网站。

    以上总结参考https://mp.weixin.qq.com/s/vfzakMKJYb51k1v7b04A3Q

  • 相关阅读:
    第八章 多线程编程
    Linked List Cycle II
    Swap Nodes in Pairs
    Container With Most Water
    Best Time to Buy and Sell Stock III
    Best Time to Buy and Sell Stock II
    Linked List Cycle
    4Sum
    3Sum
    Integer to Roman
  • 原文地址:https://www.cnblogs.com/smallzhen/p/12677016.html
Copyright © 2011-2022 走看看