網站維運

網站供應鏈安全:套件、CDN 與建置流程都可能成為入口

供應鏈防護要先建立依賴清冊,鎖定版本與來源、驗證完整性、隔離建置、縮小發布權限,並保留可重現與可回復的產物。

網站供應鏈安全:套件、CDN 與建置流程都可能成為入口

供應鏈防護要先建立依賴清冊,鎖定版本與來源、驗證完整性、隔離建置、縮小發布權限,並保留可重現與可回復的產物。

01

你部署的不只自己寫的程式

網站通常包含框架、套件、字型、圖示、CDN 腳本、建置工具、CI Action 與主機外掛。任何上游帳號被接管、套件遭植入、版本解析漂移或建置環境外洩,都可能進入最終產物。

第一步是列出直接與間接依賴、來源、版本、用途、負責人與替代方案。沒有清冊,就很難在公告漏洞或供應商事件時快速判斷影響。

02

固定版本與可信來源

應提交 lockfile,CI 使用可重現的安裝模式,避免每次建置自動取得不同相依版本。套件來源限制在官方 registry 或經管控的內部鏡像,防止名稱混淆與不明來源。

CDN 資源若無法本機託管,使用 Subresource Integrity 並固定版本,同時設定 CSP 精確來源。不要直接引用 latest、未版本化分支或可被遠端覆寫的檔案。

03

更新要快,但不能盲目自動上線

自動化工具可以提出更新與漏洞通知,但合併前仍要查看變更、維護者狀態、發布來源、權限需求與測試結果。高風險依賴採分階段更新,先在隔離環境建置與測試,再發布。

移除不再使用的套件與建置外掛能直接縮小攻擊面。不要因為「以前裝過」就永久保留高權限工具。

04

保護 CI/CD 與簽章

建置工作使用短效、最小權限憑證;拉取請求與不可信分支不得取得正式環境密鑰。第三方 CI Action 應固定到不可變 commit,並定期檢查維護狀態。

產物可建立 SHA-256 清單、來源資訊與簽章,發布時核對建置輸出與上傳檔案。密鑰不應寫進前端 bundle、環境範例、日誌或部署 ZIP。

05

把建置產物與內部資料分開

正式 ZIP 只包含執行需要的 HTML、CSS、JS、圖片、設定與公開政策。排除原始密鑰、備份、日誌、內部部署說明、驗證報告、套件快取與版本控制目錄。

發布前以全新目錄解壓產物,執行連結、雜湊、敏感字串與檔案類型檢查。不要直接把開發資料夾整包上傳。

06

事件發生時能快速回復

保存最近可信版本、相依清單與產物雜湊。發現上游遭入侵時,先停止發布、確認受影響版本與建置時間,再輪替可能接觸的憑證並重建產物;只回退套件版本不一定足夠。

修復後從乾淨環境重建,驗證網站、CSP、Service Worker 與快取是否取得新版本,並記錄決策與後續監控。