转义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

回到顶部