最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot XSS 攻擊過濾插件使用

 更新時(shí)間:2020年12月03日 09:49:56   作者:冷冷zz  
這篇文章主要介紹了Spring Boot XSS 攻擊過濾插件使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

XSS 是什么

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

xss 攻擊流程

簡單 xss 攻擊示例若網(wǎng)站某個(gè)表單沒做相關(guān)的處理,用戶提交相關(guān)惡意代碼,瀏覽器會(huì)執(zhí)行相關(guān)的代碼。

解決方案

XSS 過濾說明

  • 對表單綁定的字符串類型進(jìn)行 xss 處理。
  • 對 json 字符串?dāng)?shù)據(jù)進(jìn)行 xss 處理。
  • 提供路由和控制器方法級別的放行規(guī)則。

使用 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 參數(shù)過濾創(chuàng)建目標(biāo)接口,模擬 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 參數(shù)過濾創(chuàng)建目標(biāo)接口,模擬 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 參數(shù)過濾創(chuàng)建目標(biāo)接口,模擬 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 注解對方法和類級別進(jìn)行忽略。

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

原理分析

常見實(shí)現(xiàn)剖析

目前網(wǎng)上大多數(shù)的方案如下圖,新增 XssFilter 攔截用戶提交的參數(shù),進(jìn)行相關(guān)的轉(zhuǎn)義和黑名單排除,完成相關(guān)的業(yè)務(wù)邏輯。在整個(gè)過程中最核心的是通過包裝用戶的原始請求,創(chuàng)建新的 requestwrapper 保證請求流在后邊的流程可以重復(fù)讀。

mica-xss 實(shí)現(xiàn)

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

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

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

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

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

核心過濾邏輯

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

jsoup 實(shí)現(xiàn) WHATWG HTML5 規(guī)范,并將 HTML 解析為與現(xiàn)代瀏覽器相同的 DOM。

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

到此這篇關(guān)于Spring Boot XSS 攻擊過濾插件使用的文章就介紹到這了,更多相關(guān)Spring Boot XSS攻擊過濾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springcloud Eureka配置及集群代碼實(shí)例

    Springcloud Eureka配置及集群代碼實(shí)例

    這篇文章主要介紹了Springcloud Eureka配置及集群代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • 如何用Jfinal連接多個(gè)數(shù)據(jù)庫

    如何用Jfinal連接多個(gè)數(shù)據(jù)庫

    這篇文章主要介紹了如何用Jfinal連接多個(gè)數(shù)據(jù)庫,幫助大家更好的理解和學(xué)習(xí)使用Jfinal,感興趣的朋友可以了解下
    2021-03-03
  • Java中關(guān)于控制臺(tái)讀取數(shù)字或字符串的方法

    Java中關(guān)于控制臺(tái)讀取數(shù)字或字符串的方法

    下面小編就為大家?guī)硪黄狫ava中關(guān)于控制臺(tái)讀取數(shù)字或字符串的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • java 判斷一個(gè)數(shù)組中的數(shù)值是否連續(xù)相鄰的方法

    java 判斷一個(gè)數(shù)組中的數(shù)值是否連續(xù)相鄰的方法

    下面小編就為大家分享一篇java 判斷一個(gè)數(shù)組中的數(shù)值是否連續(xù)相鄰的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Java Servlet請求重定向的方法

    Java Servlet請求重定向的方法

    這篇文章主要介紹了使用Java Servlet請求重定向的方法,幫助大家更好的理解和學(xué)習(xí)Java Servlet的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-11-11
  • Spring Security實(shí)現(xiàn)身份認(rèn)證和授權(quán)的示例代碼

    Spring Security實(shí)現(xiàn)身份認(rèn)證和授權(quán)的示例代碼

    在 Spring Boot 應(yīng)用中使用 Spring Security 可以非常方便地實(shí)現(xiàn)用戶身份認(rèn)證和授權(quán),本文主要介紹了Spring Security實(shí)現(xiàn)身份認(rèn)證和授權(quán)的示例代碼,感興趣的可以了解一下
    2023-06-06
  • Spring Security和自定義filter的沖突導(dǎo)致多執(zhí)行的解決方案

    Spring Security和自定義filter的沖突導(dǎo)致多執(zhí)行的解決方案

    這篇文章主要介紹了Spring Security和自定義filter的沖突導(dǎo)致多執(zhí)行的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java實(shí)現(xiàn)簡單猜拳小游戲

    java實(shí)現(xiàn)簡單猜拳小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡單猜拳小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Spring事務(wù)捕獲異常后依舊回滾的解決

    Spring事務(wù)捕獲異常后依舊回滾的解決

    本文主要介紹了Spring事務(wù)捕獲異常后依舊回滾的解決,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Spring Data分頁與排序的實(shí)現(xiàn)方法

    Spring Data分頁與排序的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Spring Data分頁與排序的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12

最新評論

资中县| 湘乡市| 惠来县| 东光县| 阿鲁科尔沁旗| 新竹县| 嵊州市| 四会市| 罗山县| 务川| 黔西| 南投市| 镇坪县| 镶黄旗| 吉林市| 巴中市| 芮城县| 巴中市| 远安县| 洛隆县| 雷州市| 濮阳市| 藁城市| 容城县| 郴州市| 潢川县| 名山县| 太湖县| 文山县| 阿拉善右旗| 乌鲁木齐市| 绵阳市| 平昌县| 扎囊县| 德清县| 镇宁| 大石桥市| 嘉善县| 色达县| 南川市| 凤城市|