Tomcat XSS过滤器 嗨,我有XSS筛选的代码:

Tomcat XSS过滤器 嗨,我有XSS筛选的代码:,tomcat,xss,Tomcat,Xss,公共类CrossSiteScriptingXSSRequestWrapper扩展了HttpServletRequestWrapper{ public CrossSiteScriptingXSSRequestWrapper(HttpServletRequest servletRequest) throws IOException { super(servletRequest); } @Override public String[] getParameterValues(String p

公共类CrossSiteScriptingXSSRequestWrapper扩展了HttpServletRequestWrapper{

public CrossSiteScriptingXSSRequestWrapper(HttpServletRequest servletRequest) throws IOException {
    super(servletRequest);
}

@Override
public String[] getParameterValues(String parameter) {
    String[] values = super.getParameterValues(parameter);

    if (values == null) {
        return null;
    }

    Stream<String> stream = Arrays.stream(values);

    if (values.length > 35) {
        stream = stream.parallel();
    }

    stream.forEach(value -> {
        XSSRemover.skipXSS(value);
    });

    return values;
}

@Override
public String getParameter(String parameter) {
    return XSSRemover.skipXSS(super.getParameter(parameter));
}

@Override
public String getHeader(String name) {
    return XSSRemover.skipXSS(super.getHeader(name));
}}
public CrossSiteScriptingXSSRequestWrapper(HttpServletRequest-servletRequest)引发IOException{
超级(servletRequest);
}
@凌驾
公共字符串[]getParameterValues(字符串参数){
字符串[]值=super.getParameterValues(参数);
如果(值==null){
返回null;
}
Stream=数组.Stream(值);
如果(值.长度>35){
stream=stream.parallel();
}
stream.forEach(值->{
XSSRemover.skipXSS(值);
});
返回值;
}
@凌驾
公共字符串getParameter(字符串参数){
返回XSSRemover.skipXSS(super.getParameter(parameter));
}
@凌驾
公共字符串getHeader(字符串名称){
返回XSSRemover.skipXSS(super.getHeader(name));
}}
我想问一下是否需要,或者是否可以用以下内容替换:

    <security:headers>
        <security:frame-options policy="SAMEORIGIN"/>
        <security:xss-protection enabled="true"/>
        <security:cache-control/>
    </security:headers>

然后浏览器将处理它而不是过滤器?感谢您的回答:)

如果您查看,您会很快意识到将已知内容列入黑名单不会保护web应用程序。正确的输入处理是必要的。这就是说,您被困在您所困的应用程序中。很难说会发生什么。我会写一些测试用例,看看它们是否给了您预期的结果(使用备忘单收集关于模拟内容的想法)

这就是说,将保护的负担放到浏览器上只是一个额外的元素,您的服务器应该正确处理(转义)其内容。注意:还有一种被称为“存储XSS”的攻击——我长期以来(可能从未执行过)的计划是写一本书,书名为
alert(“XSS解释”)-仅用于测试各种车间实现。它是一个,虽然浏览器的xss保护可能不会执行它,但它也不会显示正确的书名


此外,应用程序选择的方法仅保护您不受来自浏览器的内容的影响。任何通过另一个前端(API、集成、导入器)进入的东西都可能完全利用该系统。如果这是一个问题,那就留给你了。

我认为这是不必要的——因为你需要正确处理输入,而不是禁止某些字符。我假设您的XSSRever涵盖了一些案例,不允许其他完全合法的参数。而且,IMHO也没有合适的浏览器处理方式。根本问题是什么?这听起来很可疑,这是我工作中的代码,我不知道为什么会有这个过滤器——我没有编写它。但它适用于每个请求,并且它正在检查http头。。。我想做的是加速整个应用程序,这个过滤器会减慢每个请求的速度,所以我想删除或替换它,但没有人知道它为什么会出现,他们担心安全性。。我刚从这个页面上发现,那个网站的过滤器特别差。它允许非常基本的攻击,如:
alert(1)它实际上并没有添加任何保护。