依賴安全性 是做什麼的?
規則
- 在 CI 中執行
npm audit — 遇到高或嚴重漏洞時應使建置失敗
- 使用
lockfile-lint 驗證所有套件均解析至官方 npm 源
- 在
package.json 中固定主要版本:使用 ^ 進行次要更新,絕不使用 * 或 latest
- 安裝新依賴前先審查:檢查 npm 下載次數、最後發布日期、維護者數量
- 使用
npm ls --all 審計傳遞性依賴 — 你的直接依賴會拉入數百個更多套件
- 設定 Snyk、Socket.dev 或 GitHub Dependabot 以獲取即時漏洞警報
- 每週更新依賴 — 過時的依賴會累積已知漏洞
- name: 審計依賴
run: npm audit --audit-level=high
- name: 驗證鎖定檔完整性
run: npx lockfile-lint --path package-lock.json --type npm --allowed-hosts npm --validate-https
{
"dependencies": {
"next": "^14.0.0",
"react": "^18.0.0",
"zod": "^3.0.0"
}
}
避免
- 未經檢查就執行
npm install random-package — 拼寫錯誤劫持是真實存在的
- 忽略
npm audit 警告 — 已知漏洞是最容易的攻擊途徑
- 使用
* 或 latest 作為版本範圍 — 一個被破解的發行版會立即影響你的建置
- 未經審查就執行來自不可信套件的
postinstall 腳本
- 假設熱門套件是安全的 — 即使是
event-stream(數百萬下載量)也曾被攻破