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

  • 相关阅读:
    codeforces 407B Long Path
    CodeForces 489C Given Length and Sum of Digits...
    hacker cup 2015 Round 1 解题报告
    hacker cup 2015 资格赛
    Codeforces 486(#277 Div 2) 解题报告
    POJ 3468 A Simple Problem with Integers splay
    Codeforces 484(#276 Div 1) D Kindergarten DP
    求平均值问题201308031210.txt
    I love this game201308022009.txt
    QQ
  • 原文地址:https://www.cnblogs.com/smallzhen/p/12677016.html
Copyright © 2011-2022 走看看