我红色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
,那将会很棒。有没有办法做到这一点?
谢谢!
答案 0 :(得分:1)
解决问题的一些方法:
在添加标签之前转义。使用一个像样的html编码器而不是escapeXml(HTML甚至不是XML)
添加标签,然后运行owasp antisamy。没有逃脱
将标记移动到链接功能为javascript。