【问题标题】:How to prevent malformed tags for XSS如何防止 XSS 的格式错误的标签
【发布时间】:2010-11-19 20:16:46
【问题描述】:

我阅读了有关用于 XSS 攻击的格式错误的标签的评论。我应该如何对这些进行消毒。如果我使用 HTMLPurifier 之类的库,它是否会将其作为其工作的一部分?或者这是一个独立的事情?我很少听到人们谈论它。

【问题讨论】:

  • 你能举个例子说明这些格式错误的标签被用于 XSS 攻击吗?

标签: security xss filtering htmlpurifier malformed


【解决方案1】:

HTML Purifier 的部分设计理念是仅输出符合标准的 HTML,以尽量减少浏览器解释的差异。因此,HTML Purifier 永远不会输出格式错误的标签。

【讨论】:

    【解决方案2】:

    HTMLPurifier 实际上会清除 XSS。

    【讨论】:

    • 是的,这就是它的用途,但是格式错误的标签呢?
    • 它应该仍然会处理它。
    【解决方案3】:

    在这个时代,为了完全保护自己免受 XSS 攻击,您需要将 HTML Purifier 提供的列入白名单而不是黑名单。不仅如果放在错误的上下文中,即使htmlspecialchars($var,ENT_QUOTES); 也无济于事,因为有很多方法可以避免同时使用 html 标签和引号(stringFromChar,使用反斜杠),您还必须考虑不同的浏览器字符集,这可能允许例如这个攻击在 UTF-7 \\\+ADw-script+AD4-alert(/xss/)+ADw-/script+AD4---//-- 中被执行。尽管 HTMLPurifier 确实有很大的开销,但它是一种简单的非技术性方法来防止 XSS 攻击(尽管它们的过滤器中也存在并且我相信也会存在漏洞)。

    【讨论】:

      【解决方案4】:

      在这种情况下,HTMLPurifer 是多余的。如果 XSS 在标签内,那么您可以在不需要 <> 的情况下注入 javascript 事件。最近this happened to twitter。答案是使用htmlspecialchars($var,ENT_QUOTES);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-20
        • 1970-01-01
        • 2011-10-26
        • 1970-01-01
        相关资源
        最近更新 更多