HTML 實體編碼與 XSS 轉義
為什麼要把 < > & 轉成實體,如何用 ToolBox 做 HTML 實體編解碼與基礎 XSS 防護。
為什麼需要實體編碼
在 HTML 中直接輸出 會被瀏覽器當作標籤/指令碼執行,造成 XSS。把 < 轉成 <、> 轉成 >、& 轉成 &,可讓特殊字元「只顯示不執行」。
實體 vs 字元引用
< 是命名實體,< 是十進位制數字引用,< 是十六進位制;三者等價,命名實體更易讀。
在 ToolBox 中使用
貼上文本點選編碼即可獲得實體化結果,適合回填到模板/富文本前做轉義;解碼則把實體還原為原字元。
XSS 防護的邊界
實體編碼只是輸出層手段之一,不能替代引數化查詢、CSP、輸入校驗等綜合防護;對 URL、屬性、JS 上下文要分別處理。
常見問題
- 屬性值裡也要轉義引號嗎?
- 要。放在雙引號屬性中的 " 應轉成 ",單引號屬性同理轉 ',避擴音前閉合屬性。
- 轉義後還能正常顯示嗎?
- 能。瀏覽器渲染時會把實體還原為對應字元顯示,僅原始碼層面是轉義形態。
- 僅做 HTML 轉義夠防 XSS 嗎?
- 對 HTML 正文足夠;但若內容進入 URL、on* 事件或 JS 字串,需要對應場景的編碼,單一手段並不萬能。