0

我已经能够通过在 bean:write 消息中结合使用 filter="true" 以及在我正在使用的标签库中使用 StringEscapeUtils.escapeHtml4(string) 来防止 struts 1.2 中的 XSS 攻击。但是,我可以通过以下形式的 URL 中的攻击来攻击我的网站...

www.mysite.com/App/Start.do?logo=mylogo'><script>alert("ATTACK")</script>

有关防止这种情况的最佳方法的任何建议。我尝试使用 servlet 过滤器,但我不想将所有请求输入转换为特殊字符。

4

1 回答 1

1

我发现阻止 XSS 的最简单方法是在写入网页之前将所有>,<"字符替换为&lt;, 。这应该可以保护您免受 XSS 的侵害,只要您不将用户输入放置在诸如脚本标签、图像标签(XSS 可能来自图像标签的 src=)等位置,因为他们将无法创建自己的标签。&gt;&quot;

在 PHP 中,您可以使用htmlSpecialChars方法来执行此操作,该方法对所有字符进行编码。但是 Java 没有这种方法,所以最快的方法就是替换它们,你应该自己浏览整个列表。实施起来应该不会太难 5replaceAll()


您使用的 StringEscapeUtils 方法的文档声称执行我上面的建议,因此您应该检查您是否正确使用该方法,因为您的示例不应该在这种预防形式中幸存下来。

于 2013-07-31T18:58:19.243 回答