zoukankan      html  css  js  c++  java
  • CSRF跨站请求伪造与XSS跨域脚本攻击讨论

    今天和朋友讨论网站安全问题,聊到了csrf和xss,刚开始对两者不是神明白,经过查阅与讨论,整理了如下资料,与大家分享.

    CSRFCross-site request forgery):跨站请求伪造。

    从上图可以看出,要完成一次CSRF攻击,受害者必须满足两个必要的条件:

    1)登录受信任网站A,并在本地生成Cookie。(如果用户没有登录网站A,那么网站B在诱导的时候,请求网站Aapi接口时,会提示你登录)

    2)在不登出A的情况下,访问危险网站B(其实是利用了网站A的漏洞)。

    案例:GET类型的 CSRF

     <img src="http:/10.10.10.10:8088/hi" />

    案例:POST类型的 CSRF

      <iframe style="display:none" name="csrf-frame"></iframe>

      <form method='POST' action='http://www.bank.example/withdraw' target="csrf-frame" id="csrf-form">

          <input type='hidden' name='account' value='test1'>    

        <input type='hidden' name='amount' value='888'>   

        <input type='hidden' name='for' value='sam'>    

        <input type='submit' value='submit'>

      </form>

      <script>document.getElementById("csrf-form").submit()</script>

    解决方案:

      1.每次请求带token校验

      2.验证 HTTP Referer 字段;

      3.HTTP 头中自定义属性并验证;

      4.Chrome浏览器端启用SameSite cookie

      5.短信验证码校验

    XSSCross Site Scripting):跨域脚本攻击

    XSS攻击的核心原理是:不需要你做任何的登录认证,它会通过合法的操作(比如在url中输入、在评论框中输入),向你的页面注入脚本(可能是jshmtl代码块等)。

    最后导致的结果可能是:盗用Cookie破坏页面的正常结构,插入广告等恶意内容D-doss攻击

    可以利用安全漏洞:通过富文本编辑器外联图片地址,因为引图的时候不判断图片地址,从而进行流量攻击,消耗大量流量

    案例:

      http://127.0.0.1:5000/hello4?name=<script>alert('Bingo!')</script>

    那么客户端收到的响应将变成下面的代码:

    <h1>Hello,<script>alert('Gingo!')</script>!</h1>

    当客户端收到响应后,浏览器解析这行代码就会打开一个弹窗,如下

    1、编码:

      修复编码漏洞,对用户输入的数据进行HTML Entity 编码。把字符转换成 转义字符

    2、过滤:

      移除用户输入的和事件相关的属性。如onerror可以自动触发攻击,还有onclick等。

      (总而言是,过滤掉一些不安全的内容)移除用户输入的Style节点、Script节点、Iframe节点。 (尤其是Script节点,它可是支持跨域的呀,一定要移除)    

    3、校正

      避免直接对HTML Entity进行解码。使用DOM Parse转换,校正不配对的DOM标签。

    CSRF XSS 的区别

    区别一:

      CSRF:需要用户先登录网站A,获取 cookieXSS:不需要登录。

    区别二:(原理的区别)

      CSRF:是利用网站A本身的漏洞,去请求网站AapiXSS:是向网站 A 注入 JS代码,然后执行 JS 里的代码,篡改网站A的内容。

    源码学习: https://github.com/koukay/csrf.git

    参考资料:

    From:https://www.daguanren.cc/post/csrf-introduction.html
    From:https://blog.csdn.net/stpeace/article/details/53512283
    CSRF 攻击的应对之道:https://www.ibm.com/developerworks/cn/web/1102_niugang_csrf
    WEB三大攻击之—CSRF攻击与防护:https://www.daguanren.cc/post/csrf-introduction.html
    浅谈 CSRF 攻击方式:https://www.jianshu.com/p/ffb99fc70646
    CSRF 攻击与防御:https://www.cnblogs.com/phpstudy2015-6/p/6771239.html
    《白帽子讲web安全》CSRF 实例:https://www.jianshu.com/p/94fd1a5d5413
    CSRF实例:https://blog.csdn.net/wst0717/article/details/81542289

  • 相关阅读:
    设计模式复习-状态模式
    设计模式复习-观察者模式
    设计模式复习-建造者模式
    设计模式复习-外观模式
    推荐算法-协同过滤
    设计模式复习-模板方法模式
    设计模式复习-原型模式
    设计模式复习-代理模式
    神经网络与机器学习 笔记—泛化和交叉验证
    神经网络与机器学习 笔记—改善反向传播的性能试探法
  • 原文地址:https://www.cnblogs.com/hikoukay/p/12861382.html
Copyright © 2011-2022 走看看