添加依賴
<!-- 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; }