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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章