我红色this post以及其他关于在此事上使用 JSTL 的信息。
我的问题有点不同。我们的功能之一允许用户在评论中写入主题标签。
每当列出评论时,服务器脚本都会将所有 #fooHastag
变成<a href='tag?fooHashtag'>#fooHashtag</a>
.
然后所有评论都使用 JSTL 在 GUI 上监听:
<c:forEach items="${comments}" var = "comment">
${fn:escapeXml(comment)}
</c:forEach
正如预期的那样,这段代码也逃脱了服务器上构建的哈希链接。如果我删除 fn:escapeXml
那么应用程序将不再安全。
您有解决此问题的想法吗? (除了手动构建 xss 过滤器)如果我能够使用 JSTL 的 escapeXml
那就太好了在转换主题标签之前在服务器上。有办法做到这一点吗?
谢谢!
最佳答案
解决这个问题的一些方法:
在添加标签之前转义。使用合适的 html 编码器而不是 escapeXml(HTML 甚至不是 XML)
添加标签,然后运行 owasp antisamy。无法逃脱
将标签移至 JavaScript 中以链接功能。
关于Java 允许 XSS 过滤器异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12264902/