但我对一个问题感到好奇。
是否存在使用html purifier或esapy等框架的情况?某种类型的限制。如果是这样,我想知道情况。
如果存在这些情况,手动转义(输出编码)将是防止xss的唯一选择吗?
由于
答案 0 :(得分:2)
只要您在非HTML上下文中使用这些数据,这些工具就会毫无用处。将用户数据直接内联到javascript块中将是一个相对常见的错误。
另外,任何其他非HTML上下文都会让您遇到类似的问题例如:将数据放入某些CSS代码,SMTP信封中的电子邮件地址或使用PDF文档中的数据。
相应地了解注入上下文和代码非常重要。您在OWASP链接到的XSS预防备忘单应该有助于指出您的思维方法。永远不要认为任何“一刀切”都能在无处不在。始终考虑将不受信任的数据放在何处以及如何滥用它。
此外,这些库并不完美,并且正在不断改进和修复错误。例如,HTMLPurifier有2 XSS vuls recently in 2010。现在,HTML 5得到更广泛的支持,事情也会发生变化,因为它引入了a number of new injection vectors。