疫情大数据平台是一个公益的项目,但很可能被网络上大量的扫描器扫描,并有可能收到脚本的攻击,而进行防御就是很重要的,可以有效的避免我们被攻击。
本篇主要讲述防止xss攻击部分
定义:
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
原理:
HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,
1、Springboot XSS过滤插件(mica-xss)
mica-xss组件说明:
1、对表单绑定的字符串类型进行 xss 处理。
2、对 json 字符串数据进行 xss 处理。
3、提供路由和控制器方法级别的放行规则。
配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pcTCrAlU-1653486656214)(9、springboot-防止xss攻击.assets/1234sad.png)]
引入即可
<dependency>
<groupId>net.dreamlu</groupId>
<artifactId>mica-xss</artifactId>
<version>2.0.9-GA</version>
</dependency>
<dependency>
<groupId>net.dreamlu</groupId>
<artifactId>mica-core</artifactId>
<version>2.1.0-GA</version>
</dependency>
这样就可以了,但本篇主要讲述手动构造的方式进行
过程主要是三步:包装request->创建过滤器->添加过滤器
首先创建包装request的类,主要是对请求头和请求体中的有效字符进行逐个过滤,将有攻击性的字符进行逐一替换,让其在不失去原有功能的情况下,失去攻击性,是通过装饰模式补充父类HttpServletRequestWrapper让xss的更新直接调配可以加入
public class Xss extends HttpServletRequestWrapper {
public XssHttpServletRequestWrapper(HttpServletRequest request) {
super(request);
}
@Override
public String[] getParameterValues(String parameter) {
String[] values = super.getParameterValues(parameter);
if (values==null) {
return null;
}
int count = values