如http://www.disasterarea.co.uk/blog/xss-vulnerabilities-in-web- frameworks-2/中所述
$ {}在struts 2中不是xss安全的,而在挂毯5中是安全的。
我不是Tapestry的人,但是我想知道上面是否正确。
据我所知,它${}是JSLT的一部分,它不依赖于任何Web框架。因此,如果以上句子正确无误,并且${}在挂毯中XSS是安全的,那么如何在struts 2中使其安全。
${}
更新:
要测试它,我运行struts2-showcase应用程序,打开modelDriven\modelDrivenResult.jsp并添加以下行:
modelDriven\modelDrivenResult.jsp
Am I safe ${name}
现在,当您运行展示柜并输入<script> alert('xxxx') </script>作为帮派名称时,您将看到警报!
<script> alert('xxxx') </script>
<s:property value="name" />
<c:out value="${name}" />
${name}
您可以使用显式地对其进行转义${fn:escapeXml(name)},或将转义设置为默认情况下执行,如这篇很棒的文章中所述,创建自定义ELResolver:
${fn:escapeXml(name)}