Tomcat XSS过滤器

时间:2018-06-17 18:56:50

标签: tomcat xss

  1. 您好我有XSS过滤的代码:
  2. 公共类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));
    }}
    

    我想询问是否需要,或者可以用以下代码替换它:

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

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

1 个答案:

答案 0 :(得分:0)

如果您查看XSS Cheat Sheet,您很快就会发现将已知内容列入黑名单将无法保护网络应用程序。正确的输入处理是。话虽如此,你仍然坚持使用你坚持使用的应用程序。并且很难说将会发生什么。我会写一些测试用例,看看他们是否给你了你期望的结果(使用备忘单来收集关于模拟内容的想法)。

话虽如此,将保护负担放在浏览器上只是一个额外的元素,您的服务器应该正确处理(转义)其内容。注意:还有一种被称为“存储XSS”的攻击 - 我的长期(可能从未执行过)计划是写一本标题为<script>alert("xss explained");</script>的书 - 只是为了测试各种商店的实施。它是perfectly valid title,虽然浏览器的xss-protection可能无法执行,但它也不会显示正确的书名。

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