Java 允许 XSS 过滤器异常(exception)

标签 java jstl xss

我红色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/

相关文章:

javascript - 为什么我们应该注意 Javascript 中的代码注入(inject)?

javascript - 如何在包含 <c :forEach> loop? 的 JSP 中进行操作

java - JSF网页包含

java - c :forEach loop using direct index versus attributes var and varStatus?

php - 安全的 php 主机名信息 - $_SERVER ['HTTP_HOST' ] 替代

ruby-on-rails - rails 3 : User input escaping working differently in views and mailer

java - 从 Clojure 中的字符串解析命令行参数

java - 为什么应用程序名称没有显示在 Android 的工具栏中?

Microsoft Windows Office Suite 之间的 Java 连接?

java - WebSphere 8.5.5 不返回 JAR 签名者