• 网站安全系列:跨站脚本攻击XSS


    本篇博文主要从概念和应用上介绍XSS,主要内容来源于《白帽子讲web安全》

    XSS核心本质

    XSS实际上是一种HTML注入,用户输入的数据被当成HTML的一部分来执行。防御方法核心是输入检查和输出编码。

    对于Web应用长见的MVC模式,XSS主要攻击View层。

    XSS攻击是在用户的浏览器上执行,形成过程则是服务端页面渲染时,注入了恶意的HTML代码导致。

    在ASP.NET MVC中razor默认会对所有输出进行html编码。这是ASP.NET MVC针对XSS攻击的一道防火墙

    防御方法

    一 HttpOnly设置Cookie, 解决Cookie劫持问题,浏览器将禁止页面javascript访问带有HttpOnly属性的cookie

    二 使用输出编码

    如使用 HTML 编码一个字符串的含意是什么呢?使用 HTML 编码字符串时,危险字符如 < 和 > 被替换为 HTML 实体,如 &lt; 和 &gt;。所以,当使用 HTML 编码字符串 <script>alert(“Boo!”)</script>时,它将转换为 &lt;script&gt;alert(“Boo!”)&lt;/script&gt;。浏览器在解析编码的字符串时不再执行 JavaScript 脚本。而是显示无害的页面

    1 HTML中的变量输出使用HtmlEncode编码

    2 在JavaScript的Script中输出,应该确保输出的变量在引号中。防御方法是使用JavaScriptEncode编码

    3 在JavaScript事件中输出也是使用JavaScriptEncode编码

    4 编码URL

    5 处理CSS

    三 客户端和服务端双重验证数据

    总结:尽量控制用户可控制的变量在 Script HTML标签的Stype以及Css中输出

    处理富文本

    遵循输入检查的思路,过滤富文本标签,严格不包含事件。在自定义样式的同时需要处理CSS。

    考虑到文本样式等问题,需要考虑的因素有 换行标签,空格,硬空格,P标签等。

    如果这篇博文对你有帮助,点击推荐支持下吧

    参考

    Javascript注入攻击

     

  • 相关阅读:
    编程之美--2.13
    编程之美--2.17
    编程之美--3.8
    编程之美--3.7
    面试金典--9.3
    面试金典--9.2
    面试金典--9.1
    jq插件
    laravel controller
    laravel 登录验证
  • 原文地址:https://www.cnblogs.com/needrunning/p/3312832.html
Copyright © 2020-2023  润新知