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).

相关文章
方法:如何一次性把大量号码一键导入手机通讯录?
第一步:一堆大量号码一键导入手机通讯录,需要借助软件,金芝号码提取导入助手。第二步:在电脑上打开你的表格,里面的大量号码你先复制好,如果有对应的铭字你也复制好,然后分别粘贴进前面说的软件,接着你点软件上的“通讯录转换”,就可以得到一个通讯录文件。第三步:你从电脑上把这个文件发给你的手机,在手机上打开,就可以一键批量把大量号码导入通讯录。电脑文件怎么发送给手机,这个很容易呀,你的电脑上不是有电脑Q或者电脑微吗?发给你的手机微或者手机q就ok了,多方便!
方法:如何一次性把大量号码一键导入手机通讯录?
|
2月前
|
存储 关系型数据库 MySQL
如何获知表中数据被删除
如何获知表中数据被删除
39 4
分享:2秒快速查询40万手机号码归属地,批量手机号码归属地查询可以导出excel表格,WPS表格查询手机号码归属地怎么操作,批量手机号码归属地批量查询软件,批量号码查询按省份和城市分类,按运移动号码电信号码联通号码分类整理
本文介绍了如何批量快速查询手机号码归属地并进行分类。首先,通过提供的百度网盘或腾讯云盘链接下载免费查询软件。其次,开启软件,启用复制粘贴功能,直接粘贴号码列表并选择高速查询。软件能在极短时间内(如1.76秒内)完成40多万个号码的查询,结果包括归属地、运营商、邮箱和区号,且数据准确。之后,可直接导出数据至表格,若数据超过100万,可按省份、城市及运营商分类导出。文章还附带了操作动画演示,展示全程流畅的处理大量手机号码归属地查询的过程。
分享:2秒快速查询40万手机号码归属地,批量手机号码归属地查询可以导出excel表格,WPS表格查询手机号码归属地怎么操作,批量手机号码归属地批量查询软件,批量号码查询按省份和城市分类,按运移动号码电信号码联通号码分类整理
|
数据采集 存储 人工智能
Maxcomputer表判定联系方式是否是正常的联系方式的两个方式
在数据预处理的过程中,手机号作为联系方式的一种重要形式,经常需要进行格式验证和去重等操作。然而,在实际应用中,我们常常遇到手机号格式不统一、线上业务还好点,但是有部分线下的业务手机号是手工录入的数据等问题。这些问题导致正则清洗的工作量很大,而且容易出现错误,影响数据的质量。为了解决这些问题,本文提出了一些可能的优化方案,希望能够为数据预处理工作提供一些参考。
323 0
方法:如何批量导入电话号码存到手机通讯录?
步骤一:首先,把你电脑上的excel表格打开,把你的人铭和号码,分别复制,粘贴到软件,金芝号码提取导入助手。步骤二:在它的下面点“转换通讯录”,你会得到一个通讯录文件,最后你把这个电脑上得到的文件,发给你的手机w信或者手机q,在手机上打开这个文件就会自动把电话号码批量存到手机通讯录。步骤三:不用我多说,你也知道怎么把电脑文件怎么发给手机的,一般不都是通过电脑w信电脑q发给你的手机w信手机q吗?在手机上打开这个文件,就可以一键批量把号码导入通讯录。
方法:如何批量导入电话号码存到手机通讯录?
|
数据处理 数据库
简单的EXCEL导入实战(错误数据记录原因,正确数据入库)
简单的EXCEL导入实战(错误数据记录原因,正确数据入库)
1548 0
简单的EXCEL导入实战(错误数据记录原因,正确数据入库)
|
BI 数据处理
脚本填报表的条件查询
在上一篇《脚本模式下的填报表制作》中,我们详细讲述了如何使用脚本进行数据处理、制作填报表,今天我们盘道一下脚本模式下如何实现条件查询。 一、需求描述 然后再进行增删改操作。例如,先过滤出所关心城市的客户信息,然后再对查询结果进行更新操作。
|
BI 数据库
填报脚本之轻松搞定复杂表的数据入库
润乾报表,数据校验,脚本校验,集算器
1196 0
|
算法 BI 数据库
行式填报表轻松搞定流水号
多用户填报主键重复,常会造成数据丢失,为避开这个问题我们长依赖于数据库的主键自增,那么,怎样可以做到不依赖数据库实现流水号自增呢,去乾学院看个究竟:<a href="http://c.raqsoft.
987 0