開發者工具 · HTML WYSIWYG 編輯器
清理貼上的 HTML:在到達您的 CMS 或電子郵件之前要刪除哪些內容
· 工作原理
html 安全 文字清理
解釋了 HTML 清理程序的作用,從列入白名單的標籤和屬性到刪除的腳本和中和 URL,以及如何首先檢查標記使清理程序規則更易於編寫。
帶有 onclick 的貼上片段 — 開啟時存在富文字輸入中的隱藏風險
貼上的錨點可以在無害的目的地旁邊隱藏 onclick。 ToolAcre 會小寫每個屬性名稱,並僅保留為接受的元素明確列出的屬性,因此即使更改其大小寫,onclick 也會消失。刪除報告會識別該事件處理程序,而不是默默地呈現未更改的來源。
此邊界在插入豐富貼上之前、當來源返回到視覺模式時、在複製之前、在純文字擷取之前以及在建置預覽檔案時再次執行。重複減少了操作之間的意外繞過,但該項目仍然拒絕將手寫分詞器稱為通用 XSS 過濾器。
為什麼允許清單擊敗阻止清單 - 解釋了命名允許的內容比嘗試列出每個危險的構造更安全
允許清單首先命名允許的結構:段落、標題、語意內聯元素、清單、描述清單、引用、類似程式碼的元素和錨點。未知的普通包裝器在保留文字的同時丟失了其標籤。腳本、樣式、iframe、表單、SVG 或 MathML 等危險容器也會遺失其內容。
阻止清單需要預見每一個危險或不受支持的建築物。允許名單拒絕它不理解的內容。對於一個編輯器的受限輸出來說,這是一個強有力的選擇,但它仍然受到其分詞器的限制。當涉及故意格式錯誤的輸入時,瀏覽器 HTML5 錯誤復原可以從較小的解析器產生不同的樹。
標籤、屬性和 URL 方案 — 涵蓋消毒劑過濾器的三層,以及每層的典型決策
過濾發生在三層。元素決定結構詞彙。每個元素的屬性只允許使用幾個值,例如連結 href 和標題、引文引用、縮寫標題以及有序列表開始和類型。然後,URL 檢查對實體進行解碼,從偵測器中移除控制項和空格,並檢查產生的方案。
接受的方案包括 http、https、mailto、tel 和 ftp,以及沒有明確方案的相關形式。 JavaScript、資料、檔案、blob、vbscript 和相關範例在測試中被拒絕。倖存的連結會獲得 rel 值,但這種添加並不能取代目標策略或連結審查。
樣式:剝離、允許或重寫——討論內聯樣式處理以及為什麼許多系統完全放棄它
樣式屬性被批次刪除。此模組不會嘗試解析宣告、保留安全性子集或重寫設計令牌。該策略將複製的外觀和基於 CSS 的請求表面一起刪除。類別、id 和資料屬性也消失了,產生可移植但故意缺乏表達力的標記。
具有真實風格要求的系統需要不同的審查策略。在沒有 CSS 清理程式的情況下將樣式新增至此白名單會大幅改變其安全表面。目前的實作避免了這個問題,而不是聲稱解決了任意惡意片段的 CSS 安全問題。
工作範例:從 ToolAcre 記錄的允許清單中匯出規則,而不是特定於 Word 的固定裝置
以 `<div class="WordSection"><p style="color:red" onclick="x()">Notice <strong>today</strong></p></div>` 開頭。 div 被展開,類別和樣式無法生存,onclick 被刪除,段落和強元素仍然存在。結果遵循通用策略,無需斷言哪個應用程式產生了包裝器。
新增 javascript href 和腳本區塊。錨點保留其可見文字,但遺失 href;腳本和正文消失。閱讀報告的原因。此練習有助於定義伺服器策略,但盲目複製 ToolAcre 的精確子集可能會忽略應用程式所需的元素或允許威脅模型禁止的 URL。
伺服器端與客戶端清理-解釋了為什麼伺服器必須進行清理,即使瀏覽器已經這樣做了
客戶端過濾改進了本地起草,但不能被接收用戶控制請求的伺服器信任。攻擊者可以繞過該頁面,直接呼叫端點或利用解析器差異。伺服器必須使用為其渲染上下文配置的維護的 HTML5 感知實作再次進行解析和清理。
輸出編碼也保持獨立。用作文字的 HTML 必須由模板轉義,而不是作為標記插入。故意呈現為 HTML 的片段需要在根據架構儲存或輸出之前進行清理。沙盒預覽僅證明此預覽不授予任何腳本、表單或同源存取權限。
該工具涵蓋的內容 - 縮小編輯器輸出過濾範圍,而不是一般的惡意輸入清理
ToolAcre 確實過濾了自己的輸出表面,這與工作手冊聲稱它只是檢查工具的說法相反。準確的修正範圍更窄:它不是針對任意惡意輸入的通用 XSS 清理程式。消息來源明確指出了這一點,並記錄了可能的解析器差異。
iframe 是 ToolAcre 內部渲染的深度防禦。其空沙箱屬性不允許腳本執行、表單提交或同源訪問,且引用者策略是無引用者。一旦 HTML 被複製到其他地方,框架就不再保護它。出版安全屬於接收系統。
重點:本地檢查,伺服器消毒——總結工作流程以及編輯器如何幫助您了解消毒劑將面臨的情況
在本地檢查,在伺服器上清理,並根據上下文進行渲染。這是三個不同的步驟。 ToolAcre 有助於揭示貼上的包袱並提供保守的草稿子集,而刪除通知可以在片段到達 CMS 或電子郵件工作流程之前使策略效果可見。
不要將成功的預覽版作為針對 XSS 的證據進行行銷。僅在一次性內容中使用測試有效負載,在調查重要時單獨保存原始來源,並獨立驗證目的地消毒情況。安全宣告應該準確地停止在程式碼和渲染邊界停止的地方。