正如中提到的http://www.disasterarea.co.uk/blog/xss-vulnerability-in-web-frameworks-2/ http://www.disasterarea.co.uk/blog/xss-vulnerabilities-in-web-frameworks-2/
${} 在 struts 2 中不是 xss 安全的,但在 Tapestry 5 中是安全的。
我不是 Tapestry 人,但我想知道以上是否正确。
据我所知${}
是 JSLT 的一部分,它不依赖于任何 Web 框架。所以如果上面的句子是正确的并且${}
XSS 在 Tapestry 中安全吗?我们怎样才能使其在 Struts 2 中安全。
Updated:
为了测试它,我运行 struts2-showcase 应用程序,打开modelDriven\modelDrivenResult.jsp
并添加以下行:
Am I safe ${name}
现在,当您运行展示案例并输入<script> alert('xxxx') </script>
作为黑帮名称,您可以看到警报!
-
Struts2
<s:property value="name" />
默认情况下自动转义;
-
JSTL
<c:out value="${name}" />
默认情况下自动转义;
-
JSP EL
${name}
没有逃脱。
您可以显式地转义它${fn:escapeXml(name)}
,或者设置默认执行的转义,创建自定义 ELResolver,如这篇精彩文章中所述:
- ELResolver 转义 JSP EL 值以防止跨站点脚本编写 http://pukkaone.github.io/2011/01/03/jsp-cross-site-scripting-elresolver.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)