網站導覽
目錄
稽核套件相依性以找出安全性漏洞
目錄
關於安全性稽核
安全性稽核是針對套件依賴項進行安全性漏洞評估。安全性稽核可協助您找出並修正依賴項中已知的漏洞,這些漏洞可能會造成資料遺失、服務中斷、未經授權存取敏感資訊或其他問題,進而保護套件使用者。
使用 npm audit
執行安全性稽核
注意: npm audit
指令在 npm@6 中提供。若要升級,請執行 npm install npm@latest -g
。
npm audit
指令會將套件中設定的依賴項說明提交至您的預設登錄,並要求提供已知漏洞報告。 npm audit
會檢查直接依賴項、devDependencies、bundledDependencies 和 optionalDependencies,但不會檢查 peerDependencies。
當您使用 npm install
安裝套件時,npm audit
會自動執行。您也可以手動對 已在本機安裝的套件 執行 npm audit
,以執行套件安全性稽核並產生依賴項漏洞報告,並在有提供的情況下建議修正程式。
- 在命令列中,輸入
cd path/to/your-package-name
並按下 Enter,導航至您的套件目錄。 - 確保您的套件包含
package.json
和package-lock.json
檔案。 - 輸入
npm audit
並按下 Enter。 - 檢閱稽核報告,並執行建議的命令或進一步調查(如果需要)。
解決 EAUDITNOPJSON
和 EAUDITNOLOCK
錯誤
npm audit
要求套件具有 package.json
和 package-lock.json
檔案。
- 如果您收到
EAUDITNOPJSON
錯誤,請按照「建立 package.json 檔案」中的步驟建立package.json
檔案。 - 如果您收到
EAUDITNOLOCK
錯誤,請確保您的套件具有package.json
檔案,然後執行npm i --package-lock-only
建立套件鎖定檔。
檢閱並處理安全性稽核報告
執行 npm audit
會產生一份安全性弱點報告,其中包含受影響的套件名稱、弱點嚴重性與說明、路徑和其他資訊,以及(如果有的話)套用修補程式以解決弱點的命令。如需報告中欄位的更多資訊,請參閱「關於稽核報告」
發現安全性漏洞並建議更新
如果發現安全性弱點且有更新可用,您可以
- 執行
npm audit fix
子命令,自動安裝相容的更新至有弱點的依賴項。 - 個別執行建議的命令,以安裝更新至有弱點的依賴項。(某些更新可能是會中斷 semver 的變更;如需更多資訊,請參閱「SEMVER 警告」)

SEMVER 警告
如果建議的動作是潛在的重大變更(語意版本重大變更),將會接著顯示 SEMVER WARNING
,內容為「SEMVER WARNING:建議的動作是潛在的重大變更」。如果具有漏洞的套件已變更其 API,您可能需要對套件的程式碼進行其他變更。
發現安全性漏洞,需要手動檢閱
如果發現安全性漏洞,但沒有可用的修補程式,稽核報告將提供有關漏洞的資訊,以便您可以進一步調查。

若要處理漏洞,您可以
檢查緩解因素
檢閱「更多資訊」欄位中的安全性公告,以取得緩解因素,讓您可以在有限的情況下繼續使用具有漏洞的套件。例如,漏洞可能只存在於程式碼在特定作業系統上使用時,或在呼叫特定函數時。
如果存在修正程式,請更新依賴套件
如果存在修正程式,但依賴具有漏洞套件的套件尚未更新為包含已修正版本,您可能想在依賴套件儲存庫中開啟拉取或合併請求,以使用已修正版本。
- 若要找出必須更新的套件,請查看「路徑」欄位以取得具有漏洞的套件位置,然後查看依賴它的套件。例如,如果漏洞的路徑為
@package-name > dependent-package > package-with-vulnerability
,您將需要更新dependent-package
。 - 在 npm 公共註冊表 中,找到依賴套件並導覽至其儲存庫。有關尋找套件的更多資訊,請參閱「搜尋和選擇要下載的套件」。
- 在依賴套件儲存庫中,開啟拉取或合併請求,以將有漏洞套件的版本更新為具有修正程式的版本。
- 一旦拉取或合併請求合併,且套件已在 npm 公共註冊表 中更新,請使用
npm update
更新您的套件副本。
修正漏洞
如果沒有修正程式,您可能想在套件儲存庫中提出拉取或合併請求,建議變更以處理漏洞,並提供給套件維護者。
- 查看「路徑」欄位以取得漏洞位置。
- 在 npm 公共註冊表 中,找到具有漏洞的套件。有關尋找套件的更多資訊,請參閱「搜尋和選擇要下載的套件」。
- 在套件存放庫中,開啟一個 pull 或合併請求,以修正套件存放庫。
- 一旦修正合併,且套件已在 npm 公共註冊表中更新,請更新您的套件副本,該副本依賴於已修正的套件。
在套件或依賴套件問題追蹤器中開啟問題
如果您不希望自行修正漏洞或更新依賴套件,請在套件或依賴套件的議題追蹤器中開啟一個議題。
- 在 npm 公共註冊表 中,找出具有漏洞的套件或需要更新的依賴套件。如需有關尋找套件的更多資訊,請參閱「搜尋並選擇要下載的套件」。
- 在套件或依賴套件的議題追蹤器中,開啟一個議題,並包含稽核報告中的資訊,包括「更多資訊」欄位的漏洞報告。
未發現安全性漏洞
如果未發現任何安全性漏洞,表示在您的套件依賴樹中未發現具有已知漏洞的套件。由於建議資料庫隨時更新,我們建議定期手動執行 npm audit
,或將 npm audit
加入您的持續整合流程。

在套件安裝時關閉 npm audit
安裝單一套件
若要在安裝單一套件時關閉 npm audit
,請使用 --no-audit
旗標
npm install example-package-name --no-audit
如需更多資訊,請參閱 npm-install
命令。
安裝所有套件
若要在安裝所有套件時關閉 npm audit
,請在您的使用者和全域 npmrc 設定檔中將 audit
設定設為 false
npm set audit false
如需更多資訊,請參閱 npm-config
管理命令 和 npm-config
audit 設定。