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