转义JSP / Spring MVC中的所有字符串
我以这种方式在JSP中显示字符串:
${someString}
该字符串当然可以包含特殊的html字符。当前可以HTML注入恶意代码(例如,如果someString是javascript include-
<script src...>
)。
我正在使用Spring MVC和JSP。
回答:
您可以使用JSTL
core:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
使用<c:out
value="${someString}"/>标签显示字符串。<c:out>
转义HTML字符,以便避免跨站点脚本编写,可以通过设置属性来指定escapeXml=true
。另一个优点是,你还可以提供情况下默认值的value
计算结果为null
。
您也可以使用fn:escapeXml()
EL功能。您需要为此添加JSTL函数。
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
另一种可能的方法是构建自定义ELResolver。
为EL表达式评估启用自定义变量和属性解析行为。
该博客提供了一个可行的示例。
对于整个Spring MVC应用程序,您可以在 web.xml中 指定转义:
<context-param> <param-name>defaultHtmlEscape</param-name>
<param-value>true</param-value>
</context-param>
但是转义仅适用于spring
标签,例如:
<form:input path="formField" htmlEscape="true" />
最后,您可以尝试使用第三方库XSSFilter。
以上是 转义JSP / Spring MVC中的所有字符串 的全部内容, 来源链接: utcz.com/qa/418117.html