我已经能够通过bean中的filter =“true”组合阻止struts 1.2中的XSS攻击:写入消息,并在我正在使用的标记库中使用StringEscapeUtils.escapeHtml4(字符串)。但是,我可以通过URL中的攻击以下列形式攻击我的网站...
www.mysite.com/App/Start.do?logo=mylogo'><script>alert("ATTACK")</script>
关于防止这种情况的最佳方法的任何建议。我尝试使用servlet过滤器,但我不想将所有请求输入转换为特殊字符。
答案 0 :(得分:1)
我发现阻止XSS的最简单方法是用>
,<
和{{1}替换所有"
,<
和>
字符在写入网页之前。这应该保护您免受XSS的侵害,只要您不将用户输入放在脚本标签,图像标签(XSS已经可以从src = of images标签)等位置,因为他们将无法创建自己的标签
在PHP中,您可以使用编码所有字符的htmlSpecialChars方法执行此操作。但是Java没有这种方法,所以最快的方法就是替换那些,你应该自己完成整个列表。不应该太难实现5 "
您使用声明执行我上面建议的StringEscapeUtils方法的docs,因此您应该检查您正确使用该方法作为示例不应该存在这种预防形式。