2024-08-27

[C#] 在網頁專案中使用 HtmlSanitizer 來防範 XSS 攻擊

在做網頁專案中,很常會使用到 summernote 或是其他的 html 編輯器套件,會讓客戶輸入他自己要輸入的 html 

但是呢為了避免客戶輸入的 的程式碼造成 XSS 攻擊,所以有些 Tag 或是 Attribute 是危險的,這時候有同事推薦這個套件

HtmlSanitizer




1. 你可以透過 nuget 下載該套件 https://www.nuget.org/packages/HtmlSanitizer/

2. 這邊我的們案例 這是我們測試的 html code


2.1 我們先測試預設什麼都不設定的狀況下他篩選掉什麼了,基本上 css,script 這些高危險的都被拿掉了


2.2 這時候我需要改變需求,我需要 script 這個 tag 這時候就可以自己手動加入


2.3 我需要用到 script 但是我不希望 在script 中 使用 src ,但是不能直接移除 src 這樣會影響到 img 下面的 src


其中,部分有參考 ChatGPT 的程式碼,但是使用過程中 ChatGPT 一直叫我使用 PostProcessNode 來處理

但是卻沒有得到有效的結果,最後還是參考文件寫,就留在這邊筆記一下。