【问题标题】:Measures to prevent XSS vulnerability (like Twitter's one a few days before)防止 XSS 漏洞的措施(就像几天前的 Twitter 一样)
【发布时间】:2009-05-26 04:32:31
【问题描述】:

即使是像 Twitter 这样的知名网站也存在 XSS 漏洞,我们应该如何防止这种攻击?

【问题讨论】:

    标签: xss


    【解决方案1】:

    您可以做的第一件事是将您的 cookie 设置为仅 HTTP ......这至少可以防止会话 cookie 劫持。就像有人在您可能是自己网站的管理员时窃取了您的 cookie。

    剩下的就是验证所有用户输入。

    • 规则 #0 - 除非在允许的位置,否则切勿插入不受信任的数据
    • 规则 #1 - 在将不受信任的数据插入 HTML 元素内容之前进行 HTML 转义
    • 规则 #2 - 在将不受信任的数据插入 HTML 通用属性之前进行属性转义
    • 规则 #3 - 在将不受信任的数据插入 HTML JavaScript 数据值之前 JavaScript 转义
    • 规则 #4 - 在将不受信任的数据插入 HTML 样式属性值之前进行 CSS 转义
    • 规则 #5 - 在将不受信任的数据插入 HTML URL 属性之前进行 URL 转义

    这里详细讨论了非常冗长的主题:

    http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

    http://www.owasp.org/index.php/Cross_site_scripting

    XSS 只是众多漏洞利用之一,每个 Web 开发人员都应该牢记前 10 名 OWASP,恕我直言

    http://www.owasp.org/index.php/Top_10_2007

    【讨论】:

      【解决方案2】:

      就像您可以通过使用准备好的语句使 SQL 注入成为非问题一样,您可以通过使用执行类似操作的模板引擎(DOM 序列化程序)使 XSS 非问题。

      设计您的应用程序,以便所有输出都通过模板引擎。使模板引擎默认对所有数据进行 HTML 转义。这样,您将拥有默认安全的系统,并且不依赖人类(以及大型系统的其余部分)勤奋地转义 HTML。

      【讨论】:

        【解决方案3】:

        我不知道你用什么来写你的代码,但是如果你使用 asp.net,你会被部分覆盖。 asp.net 具有他们所谓的请求验证功能,启用后,它可以防止通过用户输入引入恶意脚本。

        但有时,您必须允许使用某种文本编辑器,例如您在此问题中键入的那种。在这种情况下,您必须部分禁用请求验证以允许最终用户输入一些“富文本”html。在这种情况下,您将不得不构建某种白名单过滤机制。

        仅供参考,我不知道其他人,但 Microsft 有一个名为 Anti-Xss 的库。

        【讨论】:

        猜你喜欢
        • 2013-02-16
        • 2012-06-08
        • 1970-01-01
        • 2022-10-06
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 2012-06-21
        • 1970-01-01
        相关资源
        最近更新 更多