Springboot2.x 使用 mica-xss 实现 xss 过滤

参考

正文

代码

  1. 引入依赖库
        <!-- 这个不需要引入,因为mica-xss引入过了。但是搜索到的其他教程文章内会引入 -->
        <!-- <dependency>
            <groupId>net.dreamlu</groupId>
            <artifactId>mica-core</artifactId>
            <version>2.7.1.1</version>
        </dependency> -->
        <dependency>
            <groupId>net.dreamlu</groupId>
            <artifactId>mica-xss</artifactId>
            <version>2.7.1.1</version>
        </dependency>
  1. 控制器接收代码
package com.xiaqiuchu.xsstest.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping 
@RestController
public class IndexController {

    @GetMapping
    public String index(@RequestParam("xss") String xss){
        return xss;
    }
}

测试

  1. 普通参数测试 http://localhost:8080/?xss=1231 ,可以正确显示。
    image

  2. xss注入参数测试 http://localhost:8080/?xss=<BODY ONLOAD=alert('XSS')> ,已过滤。
    image

配置项 application.properties

# 开启xss,默认开启
mica.xss.enabled=true
# clear专用转义,默认关闭
mica.xss.enable-escape=false
# 模式:clear 清理(默认),escape 转义
mica.xss.mode=clear
# 放行的路由,默认为空
mica.xss.path-exclude-patterns=
# 拦截的路由,例如: /api/order/**
mica.xss.path-patterns=/**
# clear专用 prettyPrint,默认关闭: 保留换行
mica.xss.pretty-print=false
# 【全局】是否去除文本首尾空格
mica.xss.trim-text=true

注解与自定义过滤

建议前往 https://www.dreamlu.net/components/mica-xss.html 查看

注解:可以使用 @XssCleanIgnore 注解对方法和类级别进行忽略。
自定义:MyXssCleaner implements XssCleaner 重写 clean 方法,然后自定义的过滤注册为 bean 。

posted @ 2022-07-24 11:42  夏秋初  阅读(1712)  评论(0编辑  收藏  举报