2013-07-31 121 views
0

我已经能够通过在bean中写入filter =“true”的组合来防止struts 1.2中的XSS攻击,并且通过在标记中使用StringEscapeUtils.escapeHtml4(string)我正在使用的库。不过,我可以通过以下形式的URL攻击我的网站...Struts XSS预防 - 防止GET XSS

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

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

回答

1

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

在PHP中,您可以使用编码所有字符的htmlSpecialChars方法执行此操作。然而,Java没有这种方法,所以最快的方法就是替换它们,你应该自己仔细阅读整个列表。应该不会太难实现5 replaceAll()


docs为您的使用要求来执行我的建议上面的StringEscapeUtils方法,所以你应该检查你的使用方法正确作为你的例子不应该生存这种预防形式。

+0

感谢您的回应,我正在专门讨论URL,以防止用户点击上面的URL。或拦截所有GET请求并清除这些请求 –

+0

为什么URL包含XSS时不重要,URL不会被解析为HTML。所以它不会影响你的网站。这完全是一个美学问题? – Robadob

+0

我可以将JavaScript插入到一旦URL被击中后执行的URL中。 –