如http://www.disasterarea.co.uk/blog/xss-vulnerabilities-in-web-frameworks-2/中所述
在struts 2中$ {}不是xss安全的,而在tapestry 5中是安全的.
我不是Tapestry的人,但我想知道上面是否正确.
据我所知,它${}
是JSLT的一部分,它不依赖于任何Web框架.因此,如果上面的句子是正确的并且${}
在挂毯中是安全的XSS,我们怎样才能在struts 2中使其安全.
更新:
为了测试它我运行struts2-showcase应用程序,打开modelDriven\modelDrivenResult.jsp
并添加以下行:
Am I safe ${name}
现在,当您运行展示案例并输入gangester名称时,您可以看到警报!
Struts2
默认自动转义;
默认情况下,JSTL会自动转义;
JSP EL ${name}
不会被转义.
您可以使用显式转义它${fn:escapeXml(name)}
,或者设置默认情况下执行的转义,创建自定义ELResolver,如本文中所述:
ELResolver逃避JSP EL值以防止跨站点脚本