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; }