Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 如何检测并可能删除/清理http请求参数/头以防止XSS攻击_Spring Mvc_Httprequest_Xss_Servlet Filters - Fatal编程技术网

Spring mvc 如何检测并可能删除/清理http请求参数/头以防止XSS攻击

Spring mvc 如何检测并可能删除/清理http请求参数/头以防止XSS攻击,spring-mvc,httprequest,xss,servlet-filters,Spring Mvc,Httprequest,Xss,Servlet Filters,最近,我们发现我们基于SpringMVC的站点的一些接受查询参数的页面容易受到XSS攻击。例如,类似http://www.our-site.com/page?s=“-(console.log(document.cookie))-”&a=1&fx=326tTDE可能导致在呈现页面的上下文中执行注入的JS。这些页面都是基于GET的,不支持POST请求 这些参数在很多地方都写在标记中,因此(在所有这些地方)进行HTML编码将是乏味的,并且需要更多的代码更改。在某些情况下,它们也会写入cookies 理

最近,我们发现我们基于SpringMVC的站点的一些接受查询参数的页面容易受到XSS攻击。例如,类似
http://www.our-site.com/page?s=“-(console.log(document.cookie))-”&a=1&fx=326tTDE
可能导致在呈现页面的上下文中执行注入的JS。这些页面都是基于GET的,不支持POST请求

这些参数在很多地方都写在标记中,因此(在所有这些地方)进行HTML编码将是乏味的,并且需要更多的代码更改。在某些情况下,它们也会写入cookies

理想情况下,我们希望尽早检测它们,比如说在
Servlet过滤器/Spring拦截器中,然后针对每个请求参数,决定是要将其全部删除,还是以某种方式对其进行清理,然后再将其提供给应用程序的其余部分。我们希望这个决定也是可配置的,以便处理特定请求参数的方法可以随着时间的推移进行修改,而不会有重大的代码更改

现在,由于这些是我们想要潜在修改的请求参数,如果我们采用过滤器的方式,我们可能必须使用类似于所描述的方法。我们可能也希望类似地清理HTTP请求头

那么,处理这种情况最灵活/开销最小的方法是什么?
ESAPI
是否能够以可配置的方式检测和消毒它们?它的API不清楚什么是可能的。我们绝对不希望手动滚动正则表达式来完成此操作。此外,过滤器是否是处理此问题的正确位置


谢谢。

如果你的应用程序只使用外部
js
文件,你可以实现一个可以阻止内联脚本在注入时运行的方法。不幸的是,没有。我们有很多内联js(这就是系统的发展)。我们确实有一个单独的努力来收拾东西,但修复这个安全漏洞是当务之急。因此,现在,我们必须处理当前编写标记的方式,即在多个位置使用内联JS。