跳到主要內容

發表文章

目前顯示的是有「Subresource Integrity (SRI)」標籤的文章

Subresource Integrity (SRI) 實戰指南:透過雜湊驗證防禦 CDN 供應鏈攻擊

當你的網站從 CDN 載入第三方腳本,你真的能確定那份程式碼沒被竄改嗎? Subresource Integrity (SRI) 正是為此而生——用一個雜湊值,守住你的前端安全防線。 SRI 如何運作? SRI 的核心機制極為直接:開發者在 <script> 或 <link> 標籤內嵌入一個 integrity 屬性 ,其值為資源內容的預期雜湊(支援 SHA-256、SHA-384、SHA-512)。瀏覽器下載資源後,會在本地重新計算雜湊值並與屬性比對。 一旦不符,瀏覽器立即拒絕執行或套用該資源 ,不論差異多小。這意味著即使 CDN 服務商遭到入侵、惡意程式碼被注入,攻擊也會在用戶端被直接攔截,而非悄悄執行。 實際部署與注意事項 產生雜湊最簡單的方式是使用 srihash.org 線上工具,或透過 OpenSSL 指令在本地產生。部署時有兩個關鍵細節:其一, 必須搭配 crossorigin="anonymous" 屬性 ,否則 CORS 問題會導致驗證失敗;其二,雜湊是針對特定版本的檔案內容計算的, 每次資源更新都必須同步更新 integrity 值 。SRI 對自有伺服器的資源同樣有效,但價值主要體現在第三方來源。值得注意的是,SRI 無法防禦資源在產生雜湊前就已遭到污染的情況。 <script src="https://cdn.example.com/library.min.js" integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC" crossorigin="anonymous"> </script> 💡 重點整理 雜湊演算法優先選用 SHA-384 或 SHA-512 ,安全強度優於 SHA-256。 crossorigin="anonymous" 是必要屬性 ,缺少將導致 SRI 驗證流程中斷。 資源版本升級時須同步更新 integrity 值 ,否則頁面資源將被全面封鎖。 可搭配 Content-...