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