背景
- 最近公司信息安全部门对公司项目进行网络安全升级时,发现项目里可能会出现XSS脚本攻击漏洞,所以就需要对其参数进行过滤拦截。
XSS
- 百度百科:XSS攻击全称:cross site scripting(这里是为了和CSS区分,所以叫XSS),跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。攻击者可以使用户在浏览器中执行其预定义的恶意脚本,其导致的危害可想而知,如劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫,甚至破坏网站、修改路由器配置信息等。
- xss漏洞攻击分为三种:
- 反射性XSS攻击:前端在发送请求时,在url参数里携带一些脚本命令,然后等服务端把脚本在反射给浏览器执行脚本代码,进行XSS漏洞攻击
- 存储性XSS攻击:和反射性XSS漏洞攻击相似,但是服务器会进行持久化保存脚本命令,后续用户访问该数据时持久性进行XSS漏洞攻击
- DOS性XSS攻击:和服务端没有交互,靠浏览器的DOM解析进行XSS攻击
Java过滤
- 预防XSS漏洞攻击除了web端进行解析过滤外,也还需要服务端进行校验过滤
- 本次使用springboot项目中过滤器进行对前端传来的参数进行过滤拦截
1 | java复制代码/** |
- spring项目中可以使用web.xml定义过滤器,springboot中没有web.xml配置文件,那么就可以使用FilterRegistrationBean类把过滤器实例注册到容器
1 | java复制代码/** |
1 | java复制代码/** |
- 重写HttpServletRequestWrapper类用于过滤改变请求参数值
1 | scss复制代码/** |
- XSS过滤参数的正则工具类
1 | less复制代码/** |
最后
- 除了可以使用过滤器以外,还可以使用拦截器进行拦截校验。大致流程也差不多,先获取参数,然后进行校验,最后重新赋值。
- 上述代码例子只是简单粗化版,在实际项目中要根据需求进行代码调整和性能优化后才可在线上使用。
- 虚心学习,共同进步 -_-
本文转载自: 掘金