設定
語言設定
主題設定
HTML 轉義/反轉義
用於安全呈現文字的 HTML 實體轉義/反轉義工具,有助於降低 XSS 風險
🚀 快速開始
- 在文字框輸入內容(HTML 或已轉義文字)
- 選擇「編碼」或「解碼」
- 點擊按鈕開始轉換,結果顯示於同一文字框
- 點擊「複製」以重用結果
📌 常見使用情境
- 使用者評論:轉義使用者提交的評論內容,防止 XSS 攻擊
- 部落格文章:在文章中顯示 HTML 程式碼範例
- 論壇貼文:安全顯示使用者發布的內容
- 聊天訊息:防止惡意程式碼透過聊天功能傳播
- 表單資料:處理和顯示表單提交的資料
- 程式碼展示:在網頁中展示 HTML/JavaScript 程式碼片段
🎛️ 轉義規則與實體
- 常見字元:< > & " '(斜線 / 一般不必;視情境而定)
- 實體格式:特殊字元轉換為 &entity; 或 &#code; 格式,如 < 轉為 &lt; 或 &#60;
- 屬性轉義:引號轉換為 &quot;,保護 HTML 屬性值安全
- 腳本防護:<script> 標籤自動轉義,防止 JavaScript 注入
- 標籤處理:<div> 轉換為 &lt;div&gt;,避免被瀏覽器解析
🧭 使用建議
- 上下文轉義:根據輸出位置選擇合適的轉義策略
- 伺服器端處理:關鍵安全轉義應在伺服器端進行
- 雙重檢查:轉義後檢查輸出,確保沒有遺漏
- 使用函式庫:生產環境建議使用成熟的轉義函式庫而非手動處理
- 預覽檢查:轉義後可以在瀏覽器控制台預覽實際顯示效果
⚠️ 限制與相容性
- 本工具不是 Sanitizer:不會移除腳本/事件/危險協定,需配合內容淨化使用
- 不完全防護:僅轉義不能防止所有 XSS,需配合其他安全措施
- 上下文依賴:不同位置需要不同的轉義策略(HTML 內容、屬性、JavaScript、CSS)
- 為保持頁面流暢,大量文字轉義可能採取簡化處理,建議分段
🔒 隱私與安全
- 所有處理均在您的瀏覽器內完成,資料不會離開您的裝置
❓ 常見問題
什麼是 XSS 攻擊?
XSS(跨站腳本攻擊)是攻擊者透過注入惡意腳本到網頁中,竊取使用者資訊或執行惡意操作。HTML 轉義是防禦 XSS 的基本手段
什麼時候需要 HTML 轉義?
顯示任何使用者輸入的內容時都需要轉義,包括評論、留言、表單資料等。只要內容可能包含 HTML 標籤就需要轉義
&lt; 和 &#60; 有什麼區別?
兩者都表示 <(小於號)。&lt; 為命名實體(lt=less‑than),&#60;/&#x3C; 為數字/十六進位實體。於現代 HTML 行為相同:需可讀性則用 &lt;;在不支援命名實體或需表示任意字元/跨標記語言時用 &#60;/&#x3C;。末尾分號務必保留(如 &lt;),省略可能與後續字元黏連而被誤解析,例如「&notin」會被視為「&not;」+「in」→「¬in」。
轉義能防止所有 JavaScript 注入嗎?
不能。HTML 轉義只在 HTML 上下文有效。在 JavaScript、CSS、URL 等上下文中需要不同的轉義方法
為什麼有時會看到 &amp;lt; 這樣的雙重轉義?
這是因為內容被轉義了兩次。第一次 < 變成 &lt;,第二次 & 又被轉義成 &amp;,結果變成 &amp;lt;。應避免重複轉義
如何允許部分安全的 HTML 標籤?
請進行「淨化(Sanitization)」而非僅轉義:以允許清單保留安全標籤/屬性並過濾協議。建議僅保留 p/br/ul/ol/li/a/strong/em/code/pre/blockquote/h1–h3;a 只允許 href/title/target(協議限 http/https/mailto/tel),img 只允許 src/alt;移除 style 與所有 on* 事件。推薦使用 DOMPurify/sanitize‑html,盡量於伺服器端淨化;切勿將未淨化內容放入 innerHTML/dangerouslySetInnerHTML,純文字使用 textContent