Java 在JSP/Spring MVC中转义所有字符串

Java 在JSP/Spring MVC中转义所有字符串,java,spring,jsp,spring-mvc,escaping,Java,Spring,Jsp,Spring Mvc,Escaping,我以以下方式在JSP中显示字符串: ${someString} 当然,这个字符串可能包含特殊的html字符。目前,HTML可能会注入恶意代码(例如,如果某个字符串是javascript包含-) 如何确保在打印前转义所有字符串? 我正在使用Spring MVC和JSP。您可以使用: 另一种可能的方法是构建自定义 为EL表达式求值启用变量和属性解析行为的自定义 提供了一个如何执行的工作示例 对于整个Spring MVC应用程序,您可以在web.xml中指定转义: 最后,您可以尝试使用第三方库。您

我以以下方式在JSP中显示字符串:

${someString}
当然,这个字符串可能包含特殊的html字符。目前,HTML可能会注入恶意代码(例如,如果某个字符串是javascript包含-

如何确保在打印前转义所有字符串?

我正在使用Spring MVC和JSP。

您可以使用:

另一种可能的方法是构建自定义

为EL表达式求值启用变量和属性解析行为的自定义

提供了一个如何执行的工作示例


对于整个Spring MVC应用程序,您可以在web.xml中指定转义:


最后,您可以尝试使用第三方库。

您还可以使用JSP/Java中的
在页面级别控制此行为。您应该使用以下代码:

在JSP/HTML中:

<c:out value="TR tag </tr> Script Tag <script>alert("hello Rahul")</script>" escapeXml="true" />


您是要执行标记还是删除标记?可能重复:@newuser我想转义它,因此用户看到
@JoshuaMN使用AntySami这很好,但我必须扫描JSP中的所有输出。此外,一个新人可能不知道这是正确的方式。有自动/全局解决方案吗?@JoshuaMN更新了答案!我试着在我的表单上设置
htmlEscape=“true”
,但它没有逃避脚本标签,知道为什么吗?太好了。有了XSSFilter,现在就没有理由使用臃肿的JSF了。“但转义只适用于弹簧标记。”
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<context-param>
   <param-name>defaultHtmlEscape</param-name>
   <param-value>true</param-value>
</context-param>
<form:input path="formField" htmlEscape="true" />
<c:out value="TR tag </tr> Script Tag <script>alert("hello Rahul")</script>" escapeXml="true" />