没有SpringBoot的情况下如何针对Spring MVC 4应用程序阻止或防御XSS
问题内容:
您如何保护,清理采用原始JSON主体并且通常输出JSON响应并且不使用Spring
Boot的应用程序。我仅看到一个可能有效的示例,并使用了JsonComponent。如果我们不使用jsoncomponent,如何过滤掉一个请求,以从整个JSON请求正文中删除不良的跨站点脚本标签?同样,可以在请求正文中检测XSS标签并抛出错误。
还寻找一种全局解决方案,该解决方案可以保护JSON请求的所有输入/输出并将该代码添加到一个区域中。我们可以使用JSR
bean验证,但是必须击中所有的define属性和变量。
是否还可以查看JSON负载以获取可能包含脚本标签的数据。
问题答案:
首先,防止漏洞的概念与SpringBoot无关,而XSS就是其中之一。
通过实施,org.springframework.web.filter.OncePerRequestFilter
并根据您使用的顶级框架和所拥有的应用程序的类型,可以保护此漏洞-
必须实施过滤器注册和链接过程。
想法是简单地清理每个传入的JSON正文,并使用已清理的请求正文调用链中的下一个过滤器。
如果您有一个基于Spring的项目,则应首先尝试使用SpringSecurity依赖项并启用默认的安全功能。
对于spring security提供的xss保护,他们有以下免责声明:
请注意,这不是全面的XSS保护!
就我而言,我编写了一个自定义XSS保护过滤器,该过滤器实现了-
org.springframework.web.filter.OncePerRequestFilter
在此过滤器中,我使用了此API,
<dependency>
<groupId>org.owasp.esapi</groupId>
<artifactId>esapi</artifactId>
</dependency>
在我的代码中,我列出了可能的攻击方式,但我想可能会有更好的方法。
请参考SO上的这两个,以了解我在说的更多信息-XSS过滤器删除所有脚本以及如何在Jersey2中修改QueryParam和PathParam
Melardev的答案是为@RequestParam
&解释唯一的情况,当它为JSON正文时,您必须扩展该方法以处理该情况。我已经处理了json主体的情况,但是由于公司的版权而无法共享我的代码。