Java 我应该使用URL重写来防止XSS吗

Java 我应该使用URL重写来防止XSS吗,java,tomcat,xss,Java,Tomcat,Xss,假设某人在其浏览器中输入以下URL: http://www.mywebsite.com/<script>alert(1)</script> http://www.mywebsite.com/alert(1) 该页面与警报弹出窗口一样正常显示。我认为这将导致404,但我如何才能最好地实现这一点 我的webapp正在tomcat7服务器上运行。现代浏览器会自动防止这种情况发生,但旧的浏览器(我看你是IE6)不会。你应该在你的webapp中设置一个过滤器来防止XSS攻击 从

假设某人在其浏览器中输入以下URL:

http://www.mywebsite.com/<script>alert(1)</script>
http://www.mywebsite.com/alert(1)
该页面与警报弹出窗口一样正常显示。我认为这将导致404,但我如何才能最好地实现这一点


我的webapp正在tomcat7服务器上运行。现代浏览器会自动防止这种情况发生,但旧的浏览器(我看你是IE6)不会。

你应该在你的webapp中设置一个过滤器来防止XSS攻击

从HttpServletRequest对象获取所有参数,并将任何参数替换为筛选代码中以空格开头的值


这样,任何有害的JS脚本都不会到达您的服务器端组件。

听起来您实际上获得了一个404页面,但该页面包含资源(在本例中是一段JavaScript代码),并且不会将<和>转换为各自的HTML实体。我在几个网站上看到过这种情况

解决方案是创建一个自定义404页面,该页面不会将资源回显到页面,或者预先进行适当的HTML实体转换。你可以通过谷歌找到很多教程,这些教程可以帮助你做到这一点。

以下是我所做的:


创建了一个高级servlet过滤器,它使用OWASP的HTML净化程序来检查不可靠的字符。如果有,我将重定向到404页面。

@Axel-是的,谢谢。当ie6将此请求发送到您的tomcat 7服务器时会发生什么?注入404页?@xelco52-否,它显示带有消息“1”的警报,并正常进行。我想把它转到404页。至少我认为它应该这样做。虽然URL本身不是一个参数,是吗?不,根本不是这样。你能提供其他细节吗?源代码中返回给用户的JavaScript代码在哪里?