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

时间:2014-05-02 23:16:02

标签: spring-mvc httprequest xss servlet-filters

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

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

理想情况下,我们希望尽早检测它们,比如在Servlet Filter/Spring Interceptor内,然后在每个请求参数,决定我们是否要将它们全部放在一起,或以某种方式对其进行消毒,然后才能将其用于应用程序的其余部分。我们希望这个决定也是可配置的,这样可以随着时间的推移修改处理特定请求参数的方法,而不需要进行大量的代码更改。

现在,由于这些是我们想要修改的请求参数,如果我们采用Filter方式,我们可能必须使用类似于here描述的方法。我们可能也希望同样清理HTTP请求标头。

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

感谢。

0 个答案:

没有答案