【发布时间】:2010-11-19 20:16:46
【问题描述】:
我阅读了有关用于 XSS 攻击的格式错误的标签的评论。我应该如何对这些进行消毒。如果我使用 HTMLPurifier 之类的库,它是否会将其作为其工作的一部分?或者这是一个独立的事情?我很少听到人们谈论它。
【问题讨论】:
-
你能举个例子说明这些格式错误的标签被用于 XSS 攻击吗?
标签: security xss filtering htmlpurifier malformed
我阅读了有关用于 XSS 攻击的格式错误的标签的评论。我应该如何对这些进行消毒。如果我使用 HTMLPurifier 之类的库,它是否会将其作为其工作的一部分?或者这是一个独立的事情?我很少听到人们谈论它。
【问题讨论】:
标签: security xss filtering htmlpurifier malformed
HTML Purifier 的部分设计理念是仅输出符合标准的 HTML,以尽量减少浏览器解释的差异。因此,HTML Purifier 永远不会输出格式错误的标签。
【讨论】:
HTMLPurifier 实际上会清除 XSS。
【讨论】:
在这个时代,为了完全保护自己免受 XSS 攻击,您需要将 HTML Purifier 提供的列入白名单而不是黑名单。不仅如果放在错误的上下文中,即使htmlspecialchars($var,ENT_QUOTES); 也无济于事,因为有很多方法可以避免同时使用 html 标签和引号(stringFromChar,使用反斜杠),您还必须考虑不同的浏览器字符集,这可能允许例如这个攻击在 UTF-7 \\\+ADw-script+AD4-alert(/xss/)+ADw-/script+AD4---//-- 中被执行。尽管 HTMLPurifier 确实有很大的开销,但它是一种简单的非技术性方法来防止 XSS 攻击(尽管它们的过滤器中也存在并且我相信也会存在漏洞)。
【讨论】:
在这种情况下,HTMLPurifer 是多余的。如果 XSS 在标签内,那么您可以在不需要 <> 的情况下注入 javascript 事件。最近this happened to twitter。答案是使用htmlspecialchars($var,ENT_QUOTES);。
【讨论】: