一. 演示XSS 当访问一个不存在的网址时,例如 [url]http://localhost:8080/demo/noAction.do[/url] ,那么Struts处理后都会跳到提示“ Invalid path /noAtcion.do was requested ”的页面。 但如果我们访问的网址是 [url]http://localhost:8080/demo/<script>alert[/url]('ok')</script>.do ,那么按道理,提示页面就会变成“ Invalid path /<script>alert('ok')</script>.do was requested ”。很明显,这将会执行 <script>alert('ok')</script> 这脚本,最终显示的内容就会把执行的脚本代码去掉,剩下 Invalid path /.do was requested 。漏洞就在这里了,如果那脚本是有害的,另有企图的,那么... 二. 解决方法 尝试输入 ,将会提示该页面不存在,而不会像上面的提示那样。 解决方法就在这里:设置专门处理404等error的页面。这是Struts官方网站提供的一种方法之一。 而官方网站的wiki( )还提供其他方法。 1.升级到Struts 1.2.8版本 Struts 1.2.8版本已经解决了这个XSS漏洞。而之前的版本都受到XSS漏洞的影响。 2.配置"unknown" Struts Action 如果客户端请求了struts-config.xml中没有定义的资源,Struts会丢出 404 Invalid path 的讯息,您可以撰写匿名的ActionMapping来提供自己的错误讯息: <action unknown="true" forward="/WEB-INF/pages/error.jsp"/> 如果RequestProcessor遇到没有定义的Action请求,则会交由匿名的ActionMapping来处理。 当然别忘了最简单的方法: 设置并指定自定义的404/Not found处理网页。
本文转自 Icansoft 51CTO博客,原文链接:
http://blog.51cto.com/android/113584