返回部落格

處理不受信任 SVG 檔案的安全檢查清單

SVG 是具備渲染與指令碼能力的 XML,不是被動點陣圖。未知 SVG 在完成檢查和清理前,應視為主動內容。

檢查主動內容

尋找 script 元素、事件處理屬性、foreignObject、動畫、連結和可能觸發外部行為的樣式規則。只刪除一個 script 標籤不足以消除其他主動機制。

檢查外部引用

圖片、字型、濾鏡、CSS 和連結可能引用遠端 URL 或本機 fragment。確認每個引用是否必要,並移除或內嵌不應存取其他來源的資源。

選擇更安全的嵌入方式

作為圖片載入的 SVG,與 inline SVG 或 object 元素擁有不同能力。應選擇能滿足顯示和互動需求的最低權限嵌入方式。

清理並驗證

正式上傳應使用持續維護的 sanitizer 或明確 allowlist。請在隔離環境中渲染清理結果、比較外觀,並在條件允許時設定嚴格的 Content Security Policy。