我应该怎么做才能防止Spring MVC中的XSS?现在,我只是将输出用户文本的所有位置都放入JSTL <c:out>标签或fn:escapeXml()函数中,但这似乎容易出错,因为我可能会错过一个位置。
JSTL <c:out>
fn:escapeXml()
有没有简单的系统方法可以防止这种情况?也许像过滤器之类的?我通过@RequestParam在控制器方法上指定参数来收集输入。
@RequestParam
在Spring中,你可以从<form>标记生成的JSP页面中转义html 。这为XSS攻击提供了很多途径,并且可以通过以下三种方式自动完成:
<form>
对于web.xml文件中的整个应用程序:
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" />