XssFilter使用记录

简介: xss意思是跨域网站攻击,这里不探讨xss的起源,单纯记录下xss在项目中的实际应用,xss防止javascrpts脚本注入类似于sql注入,项目中使用到了xssfilter所以记录在此

什么是Xss



xss意思是跨域网站攻击,这里不探讨xss的起源,单纯记录下xss在项目中的实际应用,xss防止javascrpts脚本注入类似于sql注入,项目中使用到了xssfilter所以记录在此


XssFilter这个过滤器到底过滤什么

具体过滤什么无非就是httpservletrequest中的请求参数所携带的信息,网站所接收的请求里包含的信息并不明确,在被攻击的情况下可能会携带很多恶意信息,对网站的攻击,所以一个安全的网站xss这块是必须要处理的。


1.写一个自己的XssFilter:加入注释@WebFilter,给参数filtername与urlpatterns 进行赋值,第一处的filtername应该没啥用,因为在boot的启动类上添加@ServletComponentScan注解后可以将所有的servlet、filter、listener全部注入到ioc容器中(毕竟三者本质都是servlet)。第二处的urlpatterns就很重要了,这里配置拦截的地址,/* 代表拦截所有请求,但是很多的静态资源访问其实并不需要拦截。


2.去除静态资源的拦截


      String[] exclusionsUrls = {".js",".gif",".jpg",".png",".css",".ico"};
      for (String str : exclusionsUrls) {
          if (path.contains(str)) {
              exclusionsUrls = null;
              filterChain.doFilter(servletRequest,servletResponse);
              return;
          }
      }


3.**其他资源的请求自然都会被XssFiter过滤掉,自定义一个XssHttpServletRequestWraper,继承自HttpServletRequestWraper,在这里重写HttpServletRequst的各种方法,用于对请求参数的过滤。


filterChain.doFilter(new XssHttpServletRequestWrapper(request),servletResponse);


@Override
    public String getHeader(String name) {
        return XssFilterUtil.filterString(super.getHeader(name));
    }
    @Override
    public String getQueryString() {
        return XssFilterUtil.filterString(super.getQueryString());
    }
    @Override
    public String getParameter(String name) {
        return XssFilterUtil.filterString(super.getParameter(name));
    }
@Override
    public String getHeader(String name) {
        return XssFilterUtil.filterString(super.getHeader(name));
    }
    @Override
    public String getQueryString() {
        return XssFilterUtil.filterString(super.getQueryString());
    }
    @Override
    public String getParameter(String name) {
        return XssFilterUtil.filterString(super.getParameter(name));
    }


以上就是对请求参数的各种过滤,总结一句话就是对可能造成安全隐患的字符进行替代成*,-,#,等。2020-07生产出现过一次类似的问题,在所有的文件信息中本应存入文件下载所需的downloadId,结果存储的是一个json串,这里的"已经被XssFilter过滤成了$qt).

相关文章
|
5月前
|
存储 分布式计算 DataWorks
MaxCompute产品使用合集之表被删除重建后如何查到之前的权限信息
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
存储 关系型数据库 MySQL
如何获知表中数据被删除
如何获知表中数据被删除
51 4
|
7月前
分享:2秒快速查询40万手机号码归属地,批量手机号码归属地查询可以导出excel表格,WPS表格查询手机号码归属地怎么操作,批量手机号码归属地批量查询软件,批量号码查询按省份和城市分类,按运移动号码电信号码联通号码分类整理
本文介绍了如何批量快速查询手机号码归属地并进行分类。首先,通过提供的百度网盘或腾讯云盘链接下载免费查询软件。其次,开启软件,启用复制粘贴功能,直接粘贴号码列表并选择高速查询。软件能在极短时间内(如1.76秒内)完成40多万个号码的查询,结果包括归属地、运营商、邮箱和区号,且数据准确。之后,可直接导出数据至表格,若数据超过100万,可按省份、城市及运营商分类导出。文章还附带了操作动画演示,展示全程流畅的处理大量手机号码归属地查询的过程。
338 0
分享:2秒快速查询40万手机号码归属地,批量手机号码归属地查询可以导出excel表格,WPS表格查询手机号码归属地怎么操作,批量手机号码归属地批量查询软件,批量号码查询按省份和城市分类,按运移动号码电信号码联通号码分类整理
|
数据库
机房收费系统——学生基本信息维护(组合查询,选中整行)
机房收费系统——学生基本信息维护(组合查询,选中整行)
55 0
机房收费系统——学生基本信息维护(组合查询,选中整行)
|
数据采集 存储 人工智能
Maxcomputer表判定联系方式是否是正常的联系方式的两个方式
在数据预处理的过程中,手机号作为联系方式的一种重要形式,经常需要进行格式验证和去重等操作。然而,在实际应用中,我们常常遇到手机号格式不统一、线上业务还好点,但是有部分线下的业务手机号是手工录入的数据等问题。这些问题导致正则清洗的工作量很大,而且容易出现错误,影响数据的质量。为了解决这些问题,本文提出了一些可能的优化方案,希望能够为数据预处理工作提供一些参考。
356 0
Maxcomputer表判定联系方式是否是正常的联系方式的两个方式
|
BI 数据处理
脚本填报表的条件查询
在上一篇《脚本模式下的填报表制作》中,我们详细讲述了如何使用脚本进行数据处理、制作填报表,今天我们盘道一下脚本模式下如何实现条件查询。 一、需求描述 然后再进行增删改操作。例如,先过滤出所关心城市的客户信息,然后再对查询结果进行更新操作。
|
BI 数据库
填报脚本之轻松搞定复杂表的数据入库
润乾报表,数据校验,脚本校验,集算器
1206 0
|
BI 数据库 关系型数据库
行式填报之主键设置
填报,行式填报,主键设置
1197 0
|
JavaScript BI
报表数据填报中的自动计算
报表在进行数据填报时,经常会遇到一些表达式计算,例如:简单的加减乘除、复杂的日期计算等。看润乾报表如何让你摆脱手动计算的尴尬,让数据自己进行自动计算,详细内容请直接戳这里查看:<a href="http://c.
1199 0