美文网首页
XSS 攻击防御

XSS 攻击防御

作者: 菜鸡前端 | 来源:发表于2021-09-08 17:38 被阅读0次

    1. XSS介绍

    百度百科:XSS 跨站脚本攻击(Cross Site Scripting),恶意攻击者往Web页面里插入恶意Script代码或者链接地址,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

    2. 攻击原理

    按照攻击过程来分类,XSS 攻击可以分为:

    • 反射型 XSS
    • 存储型 XSS
    • 基于 DOM 的 XSS

    反射和存储 XSS 是服务器端注入问题,而基于 DOM 的 XSS 是客户端(浏览器)端注入问题

    2.1 反射型XSS

    客户端发出请求后,XSS代码出现在url中作为输入提交到服务器,XSS代码随着响应内容一起被发送到客户端,最后浏览器执行XSS代码。这种XSS的攻击方式一般是骗人点链接,恶意代码在url中。

    2.2 存储型XSS

    恶意代码被当做正常数据插入到数据库中,当用户正常访问页面的时候,恶意代码从数据库中被取出,在当前页面被触发。用户不会发现自己被攻击,比如订单留言功能。

    2.3 基于 DOM 的 XSS

    对于DOM XSS,攻击是在客户端直接在运行时注入到应用程序中的。详情见这里

    3. XSS 攻击的危害

    • 盗取受害者 cookie,登录他人账户;
    • 钓鱼操作,操控js代码可以动态生成一个html文档;
    • 收集你的隐私数据,回传到攻击者服务器;
    • 劫持访问,在恶意脚本中插入JS代码,重定向到其他页面,比如真人XXX在线发牌;

    4. 防范措施

    • 除了在允许的位置,永远不要插入不受信任的数据
    • 在将不受信任的数据插入 HTML 元素内容之前进行 HTML 编码
    • 在谷歌浏览中默认开启XSS保护。

    4.1 永远不要插入不受信任的数据

    任何可疑的地方都要进行转义处理。

    脚本
    <script>...NEVER PUT UNTRUSTED DATA HERE...</script>
    
    注释
    <!--...NEVER PUT UNTRUSTED DATA HERE...-->
    
    属性名称
    <div ...NEVER PUT UNTRUSTED DATA HERE...=test />
    
    标签名称
    <NEVER PUT UNTRUSTED DATA HERE... href="/test" />
    
     CSS
    <style>
    ...NEVER PUT UNTRUSTED DATA HERE...
    </style>
    

    4.2 对插入的文本进行 HTML 编码

    对 实体标签进行编码处理,比如 XML 中的 5 个重要字符(&, <, >, ", ')

     & --> &amp;
     < --> &lt;
     > --> &gt;
     " --> &quot;
     ' --> &#x27;
    

    4.3 URL 参数编码

    <a href="http://www.somesite.com?test=...ENCODE UNTRUSTED DATA BEFORE PUTTING HERE...">link</a >
    

    4.3 过滤可疑的代码

    对字符串进行 DOM parse 校验,过滤不安全的内容。

    • 移除用户上传的 dom 属性,如 onerror
    • 移除用户上传的 style 节点,script节点,iframe节点
    • 限制 URL 输入,假如通过 GET 请求访问该 url 会导致攻击成功,那就不能允许用户输入URL地址,否责这个请求很容易发起,比如 填写头像地址;

    5. 通用的防御方法

    XSS 的防御措施可以归纳为:输入过滤,输出转义,另外还可以配合下面的措施尽量减少 XSS 的危害性。

    5.1 使用 HTTPOnly cookie 标志

    避免 cookie 被脚本读取

    5.2 使用 CSP 策略

    配置 content-security-content,限制可以访问的业务域名,可以防止信息被其他服务收集。

    相关文章

      网友评论

          本文标题:XSS 攻击防御

          本文链接:https://www.haomeiwen.com/subject/cvpvwltx.html