SpringBoot 处理xss攻击

添加依赖

        <!-- xss跨站脚本攻击 -->
        <dependency>
            <groupId>net.dreamlu</groupId>
            <artifactId>mica-core</artifactId>
            <version>2.5.8</version>
        </dependency>
        <dependency>
            <groupId>net.dreamlu</groupId>
            <artifactId>mica-xss</artifactId>
            <version>2.5.8</version>
        </dependency>

  注意:mica与springboot有版本对应关系

mica 源码 Github:https://github.com/lets-mica
mica 源码 Gitee(码云):https://gitee.com/596392912/mica
mica 性能压测:https://github.com/lets-mica/mica-jmh
文档地址(官网):http://wiki.dreamlu.net

控制层

package com.ybchen.controller;

import com.ybchen.model.UserDO;
import lombok.extern.slf4j.Slf4j;
import net.dreamlu.mica.xss.core.XssCleanIgnore;
import org.springframework.web.bind.annotation.*;

/**
 * @ClassName XssController
 * @Description xss跨站攻击
 * @Author Alex
 * @Date 2023/3 下午3:53
 * @Version 1.0
 */
@Slf4j
@RestController
@RequestMapping(value = "xss")
public class XssController {

    /**
     * 获取用户信息
     * 当参数username=<script>alert(666)</script>
     * 接收不到username参数,username=null
     *
     * @param user 用户对象
     * @return
     */
    @PostMapping("/post")
    public String post(@RequestBody UserDO user,@RequestParam String age) {
        log.info("【普通方式】获取用户信息,user:{},age:{}", user,age);
        return user.toString();
    }

    /**
     * 获取用户名称
     * 不会把参数username=<script>alert(666)</script>过滤掉
     *
     * @param username 用户名称
     * @return
     */
    @GetMapping("/getUserName")
    public String getUserName(String username) {
        log.info("【普通方式】获取用户名称,username:{}", username);
        return username;
    }

    /**
     * 获取用户名称
     * 跳过过滤, 在Controller或者方法上添加注解@XssCleanIgnore。
     * 会把参数username=<script>alert(666)</script>过滤掉
     *
     * @param username 用户名称
     * @return
     */
    @XssCleanIgnore
    @GetMapping("/getRegisterUserName")
    public String getRegisterUserName(String username) {
        log.info("【过滤方式】获取用户名称,username:{}", username);
        return username;
    }

}
@Data
public class UserDO {
    /**
     * 用户ID
     */
    private String id;

    /**
     * 用户名称
     */
    private String username;
}
posted @ 2023-03-17 16:08  陈彦斌  阅读(63)  评论(0编辑  收藏  举报