spring - 如何防止人们在 Spring MVC 中进行 XSS?

标签 spring jsp spring-mvc xss html-escape-characters

在 Spring MVC 中我应该怎么做才能防止 XSS?现在我只是将所有输出用户文本的地方都放入 JSTL <c:out>标签或 fn:escapeXml()功能,但这似乎容易出错,因为我可能会错过一个地方。

有没有一种简单的系统方法来防止这种情况发生?也许像过滤器之类的?我通过指定 @RequestParam 来收集输入我的 Controller 方法上的参数。

最佳答案

在 Spring 中,您可以从 <form> 生成的 JSP 页面中转义 html。标签。这关闭了 XSS 攻击的许多途径,并且可以通过三种方式自动完成:

对于web.xml 中的整个应用程序文件:

<context-param>
    <param-name>defaultHtmlEscape</param-name>
    <param-value>true</param-value>
</context-param>

对于文件本身中给定页面上的所有表单:

<spring:htmlEscape defaultHtmlEscape="true" /> 

对于每种形式:

<form:input path="someFormField" htmlEscape="true" /> 

关于spring - 如何防止人们在 Spring MVC 中进行 XSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2147958/

相关文章:

java - spring mvc 应用程序的正确配置

java - 测试 Spring Controller : Invoke service methods or mock results

java - 使用 @Repository、@Service 和 @Controller 注释给出 bean 创建异常?

java - 为什么我在 Java 8 中收到 JDK 1.5 相关的错误消息?

java - 将 CascadeType.MERGE 与 Spring Data Repositories 一起使用的正确方法是什么?

java - 使用 RowMapper 和 JdbcTemplate 得到 NullPointerException

java - 将 <div> 数据传递给 servlet (ACE - EDITOR)

java - Jetty-9.3.12 独立服务器中的 EXIT_ON_INIT_FAILURE

Java 错误 : Only a type can be imported. XYZ 解析为一个包

java - 在表达式语言/JSTL 的帮助下访问电子邮件属性时出现问题