其他受访者是正确的:有许多情况下可能发生注射。请记住,解决方案必须考虑可能发生注入的许多上下文。黑名单(或“已知不好”)过滤方法将无法正常工作,因为它们会受到攻击,这些攻击使用意外的字符集编码注入,创造性地使用空白以及其他技术。欲了解更多信息,请参阅OWASP DOM Based XSS。该页面的链接教育'问题'方面。
至于解决方案,请考虑我们刚发布的OWASP XSS DOM Prevention Cheat Sheet。在备忘单中引用了几个工具包,可帮助您实施转义或编码策略。可能MY FAVORITE确保编写服务器编写的客户端代码并妥善转义的方法是JXT。从谷歌代码页:
<!-- Automatically escaped content -->
Hello ${user.getName()}!
<!-- Example tag with 3 different contextual encoding requirements -->
<img src="/profile-photo?user=${user.getId()}"
alt="Photo of ${user.getName()}"
onclick="openProfile('${user.getId()}')" />
<!-- Override the default escape, rare, but occasionally needed: -->
<jxt:out value="${user.getProfileHtml()}" escape="none"/>
注意它包括自动转义为背景也是一个自定义标签,允许非转义输出,在你的页面的情况下,特殊元素/应用程序将通过车被打破漂白编码机制。
打算提一下,但上面链接到http://www.owasp.org/index.php/XSS%5F%28Cross%5FSite%5FScripting%29%5FPrevention%5FCheat%5FSheet做得很好 - 即使CSS可以成为XSS的来源。这么多的攻击媒介。 – 2009-10-27 01:11:45
是的,很好的链接。 – 2009-10-27 01:19:16
感谢您的来源和简单的例子。 – bucabay 2009-10-27 01:25:41