一尘不染

在Struts 2中使$ {}运算符XSS安全(与挂毯相同)

jsp

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并添加以下行:

Am I safe  ${name}

现在,当您运行展示柜并输入<script> alert('xxxx') </script>作为帮派名称时,您将看到警报!


阅读 251

收藏
2020-06-08

共1个答案

一尘不染

  1. *<s:property value="name" />默认情况下, *Struts2 自动转义。
  2. JSTL <c:out value="${name}" />默认情况下自动转义;
  3. JSP EL ${name}不会转义。

您可以使用显式地对其进行转义${fn:escapeXml(name)},或将转义设置为默认情况下执行,如这篇很棒的文章中所述,创建自定义ELResolver:

2020-06-08