亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Spring Boot XSS 攻擊過濾插件使用

瀏覽:89日期:2023-07-29 16:55:21

XSS 是什么

XSS(Cross Site Scripting)攻擊全稱跨站腳本攻擊,為了不與 CSS(Cascading Style Sheets)名詞混淆,故將跨站腳本攻擊簡稱為 XSS,XSS 是一種常見 web 安全漏洞,它允許惡意代碼植入到提供給其它用戶使用的頁面中。

xss 攻擊流程

Spring Boot XSS 攻擊過濾插件使用

簡單 xss 攻擊示例若網站某個表單沒做相關的處理,用戶提交相關惡意代碼,瀏覽器會執行相關的代碼。

Spring Boot XSS 攻擊過濾插件使用

解決方案

XSS 過濾說明

對表單綁定的字符串類型進行 xss 處理。 對 json 字符串數據進行 xss 處理。 提供路由和控制器方法級別的放行規則。

使用 mica-xss

引入一下 依賴即可

<!--XSS 安全過濾--><dependency><groupId>net.dreamlu</groupId><artifactId>mica-core</artifactId><version>2.0.9-GA</version></dependency><dependency><groupId>net.dreamlu</groupId><artifactId>mica-xss</artifactId><version>2.0.9-GA</version></dependency>

測試 XSS 過濾

測試 GET 參數過濾創建目標接口,模擬 get 提交

@GetMapping('/xss')public String xss(String params){ return params;}

返回為空

⋊> ~ curl --location --request GET ’http://localhost:8080/xss?params=%3Cscript%3Ealert(%27xxx%27)%3C/script%3E’

測試 POST form 參數過濾創建目標接口,模擬 post form 提交

@PostMapping('/xss')public String xss(String params){ return params;}

返回為空

curl --location --request POST ’http://localhost:8080/xss’ --header ’Content-Type: application/x-www-form-urlencoded’ --data-urlencode ’params=<script>alert(’’’xxx’’’)</script>’

測試 POST body 參數過濾創建目標接口,模擬 post body 提交

@PostMapping('/xss') public String xss(@RequestBody Map<String,String> body){ return body.get('params'); }

返回為空

curl --location --request POST ’http://localhost:8080/xss’ --header ’Content-Type: application/json’ --data-raw ’{ 'params':'<script>alert(’’’XXX’’’)</script>'}’

跳過某些接口過濾

可以使用 @XssCleanIgnore 注解對方法和類級別進行忽略。

@XssCleanIgnore@PostMapping('/xss')public String xss(@RequestBody Map<String,String> body){ return body.get('params');}

原理分析

常見實現剖析

目前網上大多數的方案如下圖,新增 XssFilter 攔截用戶提交的參數,進行相關的轉義和黑名單排除,完成相關的業務邏輯。在整個過程中最核心的是通過包裝用戶的原始請求,創建新的 requestwrapper 保證請求流在后邊的流程可以重復讀。

Spring Boot XSS 攻擊過濾插件使用

mica-xss 實現

1. 自定義 WebDataBinder 編輯器支持 form 過濾

Spring WebDataBinder 的作用是從 web request 中把 web 請求里的parameters綁定到對應的JavaBean上,在 Controller 方法中的參數類型可以是基本類型,也可以是封裝后的普通 Java 類型。若這個普通的 Java 類型沒有聲明任何注解,則意味著它的每一個屬性都需要到 Request 中去查找對應的請求參數,而 WebDataBinder 則可以幫助我們實現從 Request 中取出請求參數并綁定到 JavaBean 中。

SpringMVC 在綁定的過程中提供了用戶自定義編輯綁定的接口,注入即可在參數綁定 JavaBean 過程中執行過濾。

Spring Boot XSS 攻擊過濾插件使用

2. 自定義 JsonDeserializer 反序列化支持 Json 過濾

在 Spring Boot 中默認是使用 Jackson 進行序列化和反序列化 JSON 數據的,那么除了可以用默認的之外,我們也可以編寫自己的 JsonSerializer 和 JsonDeserializer 類,來進行自定義操作。用戶提交 JSON 報文會通過 Jackson 的 JsonDeserializer 綁定到 JavaBean 中。我們只需要自定義 JsonDeserializer 即可完成在綁定 JavaBean 中執行過濾。

Spring Boot XSS 攻擊過濾插件使用

核心過濾邏輯

在 mica-xss 中并未采取上文所述通過自己手寫黑名單或者轉義方式的實現方案,而是直接實現 Jsoup 這個工具類。

jsoup 實現 WHATWG HTML5 規范,并將 HTML 解析為與現代瀏覽器相同的 DOM。

從 URL,文件或字符串中刮取和解析 HTML 使用 DOM 遍歷或 CSS 選擇器查找和提取數據 操縱 HTML 元素,屬性和文本 清除用戶提交的內容以防止安全白名單,以防止 XSS 攻擊 輸出整潔的 HTML

Spring Boot XSS 攻擊過濾插件使用

到此這篇關于Spring Boot XSS 攻擊過濾插件使用的文章就介紹到這了,更多相關Spring Boot XSS攻擊過濾內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 成人欧美一区二区三区小说 | 国内91视频 | 久久精品不卡 | 欧美一区二区三区男同 | japanese日本护士xx亚洲 | 亚洲福利 | 特级黄色毛片 | 高清欧美在线三级视频 | 欧美一级二级三级视频 | 夭天色综合 | 一级特黄aaa免费 | 一级日本特黄毛片视频 | 日本老太婆一级毛片免费 | 黄色小视频在线观看免费 | 日本丰满hdxxxxx护士 | 黄色录像欧美 | 亚洲精品一区二区久久 | 亚洲综合欧美综合 | 国产欧美精品三区 | 一级做受毛片免费大片 | 98色花堂国产第一页 | 国产乱弄免费视频观看 | 日韩免费视频播放 | 国产精品日日摸夜夜添夜夜添1 | 色网综合 | 国产呦系列 | 国产成人综合在线观看网站 | 免费香蕉依人在线视频久 | 91精品国产高清久久久久久 | 九一精品| 欧美视频一区二区三区在线观看 | 国产入口在线观看 | 国产亚洲新品一区二区 | 福利视频一区二区 | 噜噜噜天天躁狠狠躁夜夜精品 | 国产亚洲欧美在线观看的 | 狠狠久久综合 | 黄色香蕉网站 | 国产成人在线网址 | 日韩久久精品视频 | 亚色一区|