W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
運(yùn)行安全審計
npm audit [--json|--parseable]
npm audit fix [--force|--package-lock-only|--dry-run|--production|--only=dev]
審計命令將項目中配置的依賴項的描述提交到默認(rèn)注冊表,并要求提供已知漏洞的報告。如果發(fā)現(xiàn)任何漏洞,則將計算影響和適當(dāng)?shù)难a(bǔ)救措施。如果fix
提供了參數(shù),則補(bǔ)救措施將應(yīng)用于包樹。
如果未發(fā)現(xiàn)漏洞,該命令符將以0
退出代碼。
請注意,某些漏洞無法自動修復(fù),需要人工干預(yù)或?qū)彶椤?/p>
另請注意,由于npm audit
修復(fù)程序在后臺下運(yùn)行一個完整的npm install
,因此適用于安裝程序的所有配置也將適用于npm install
。因此就像npm audit fix --package-lock-only
只會按預(yù)期工作。
默認(rèn)情況下,如果發(fā)現(xiàn)任何漏洞,審計命令將以非零代碼退出。在 CI 環(huán)境中包含--audit-level
參數(shù)以指定導(dǎo)致命令失敗的最低漏洞級別可能很有用。此選項不過濾報告輸出,它只是更改命令的失敗閾值。
npm 可以使用兩個審計端點(diǎn)來獲取漏洞信息:Bulk Advusirt=y
或 Qucik Audit
端點(diǎn)。
從版本 7 開始,npm 使用更快的Bulk Advisory
端點(diǎn)來優(yōu)化計算審計結(jié)果的速度。
npm 將生成一個 JSON 負(fù)載,其中包含樹中每個包的名稱和版本列表,并將其 POST 到路徑/-/npm/v1/security/advisories/bulk
處的默認(rèn)配置注冊表。
樹中任何在 package.json 文件中沒有version
字段的包都將被忽略。如果指定了任意的--omit
選項(通過--omit
配置或速記之一,例如?--production
、--only=dev
等),則將根據(jù)需要從提交的有效負(fù)載中省略包。
如果注冊中心以錯誤或無效響應(yīng)作為響應(yīng),則 npm 將嘗試從Quick Audit
端點(diǎn)加載咨詢數(shù)據(jù)。
預(yù)期結(jié)果將包含與建議范圍匹配的每個依賴項的一組建議對象。每個咨詢對象包含name
,url
,id
,severity
,vulnerable_versions
,和title
。
然后 npm 使用這些咨詢對象來計算樹中依賴項的漏洞和元漏洞。
如果Bulk Advisory
端點(diǎn)返回錯誤或無效數(shù)據(jù),npm 將嘗試從Quick Audit
端點(diǎn)加載建議數(shù)據(jù),這在大多數(shù)情況下要慢得多。
package-lock.json
提交了在中找到的完整包樹,以及以下附加元數(shù)據(jù):
npm_version
node_version
platform
arch
node_env
樹中的所有包都提交到 Quick Audit 端點(diǎn)。生成報告時會跳過省略的依賴項類型。
出于謹(jǐn)慎考慮,如果包名包含/
字符,npm 版本 5 和 6 會從提交的報告中“清除”任何包,以避免泄露潛在私有包或 git URL 的名稱。
然而,在實(shí)踐中,這導(dǎo)致審計經(jīng)常無法正確檢測元漏洞,因為樹會因缺少依賴項而顯得無效,并阻止檢測使用 git 依賴項或私有模塊的包樹中的漏洞。
從版本 7 開始,此清理已從 npm 中刪除。
npm 使用該?@npmcli/metavuln-calculator
?模塊將一組安全公告轉(zhuǎn)換為一組“漏洞”對象?!霸┒础笔怯捎谝蕾囉谝资芄舭囊资芄舭姹径资芄舻囊蕾図?。
例如,如果包foo
在 范圍內(nèi)易受攻擊>=1.0.2 <2.0.0
,并且包bar
依賴于foo@^1.1.0
,則bar
只能通過安裝易受攻擊版本的 來安裝該版本foo
。在這種情況下,bar
是一個“元漏洞”。
一旦計算了給定包的元漏洞,它們就會被緩存在~/.npm
文件夾中,并且只有在建議范圍發(fā)生變化或包的新版本發(fā)布時才會重新評估(在這種情況下,新版本也會檢查元漏洞狀態(tài)) )。
如果元漏洞鏈一直延伸到根項目,并且在不更改其依賴范圍的情況下無法更新,npm audit fix
則將需要--force
應(yīng)用修復(fù)的選項。如果補(bǔ)救措施不需要更改依賴范圍,那么所有易受攻擊的軟件包都將更新為沒有針對其發(fā)布建議或元漏洞的版本。
npm audit
如果未發(fā)現(xiàn)漏洞,該命令將以 0 退出代碼退出。npm audit fix
如果未發(fā)現(xiàn)漏洞或修復(fù)能夠成功修復(fù)所有漏洞,則該命令將以 0 退出代碼退出。
如果發(fā)現(xiàn)漏洞,退出代碼將取決于?audit-level
配置設(shè)置。
掃描你的項目中是否存在漏洞,并自定為易受攻擊的依賴項安裝任何兼容更新:
$ npm audit fix
在audit fix
不修改的情況下運(yùn)行node_modules
,但仍更新 pkglock:
$ npm audit fix --package-lock-only
跳過更新devDependencies
:
$ npm audit fix --only=prod
已audit fix
為頂級依賴項安裝 semver-major 更新,而不僅僅是與 semver 兼容的更新:
$ npm audit fix --force
不要運(yùn)行得到一個什么樣的想法干audit fix
就行了,還輸出安裝在JSON格式的信息:
$ npm audit fix --dry-run --json
掃描你的項目是否存在漏洞并僅顯示詳細(xì)信息,無需修復(fù)任何內(nèi)容:
$ npm audit
獲取 JSON 格式的詳細(xì)審計報告:
$ npm audit --json
以純文本結(jié)果獲取詳細(xì)的審計報告,由制表符分隔,允許將來在腳本或命令行后處理中重用,例如,選擇一些打印的列:
$ npm audit --parseable
要解析列,你可以使用 example?awk
,然后打印其中的一些:
$ npm audit --parseable | awk -F $'\t' '{print $1,$4}'
null
null
,"info"
,'low","moderate"
,"high"
,"critical",
or"none
npm audit
以非零退出代碼退出的最低漏洞級別。
false
Boolean
表示你不希望 npm 進(jìn)行任何更改并且它應(yīng)該只報告它會做的事情。這可以被傳遞到任何修改本地安裝,例如,命令的install
,update
,?dedupe
,uninstall
,以及pack
和publish
。
注意:這不是由其他網(wǎng)絡(luò)相關(guān)的命令,如兌現(xiàn)dist-tags
,?owner
等等。
false
Boolean
刪除各種針對不幸副作用、常見錯誤、不必要的性能下降和惡意輸入的保護(hù)措施。
npm version
命令在不干凈的 git 存儲庫上工作。npm cache clean
。engines
聲明要求不同版本的 npm 的包。engines
聲明要求不同版本 的包node
,即使--engine-strict
已啟用。npm audit fix
在你聲明的依賴范圍之外安裝模塊(包括 SemVer 主要更改)。--yes
期間隱式設(shè)置npm init
。npm pkg
如果你不清楚自己要做什么,強(qiáng)烈建議你不要使用此選項!
false
Boolean
是否輸出JSON數(shù)據(jù),而不是正常輸出。
npm pkg set
它允許在將設(shè)置值保存到您的package.json
.并非所有 npm 命令都支持。false
Boolean
如果設(shè)置為 true
,當(dāng)前操作將只使用package-lock.json
,忽略node_modules
。
因為update
這意味著只會package-lock.json
更新,而不是檢查node_modules
和下載依賴項。
對于list
這個裝置的輸出將根據(jù)由所描述的樹?package-lock.json
,而不是內(nèi)容node_modules
。
NODE_ENV
環(huán)境變量設(shè)置為production
,則為dev
,否則為空。dev
、optional
或peer
(可多次設(shè)置)要從磁盤上的安裝樹中省略的依賴項類型。
請注意,這些依賴的仍然解決,加入?package-lock.json
或npm-shrinkwrap.json
文件。它們只是沒有物理安裝在磁盤上。
如果包類型同時出現(xiàn)在--include
和--omit
列表中,則它將被包括在內(nèi)。
如果生成的省略列表包含'dev'
,則NODE_ENV
環(huán)境變量將被設(shè)置'production'
為所有生命周期腳本。
String
(可多次設(shè)置)
允許在當(dāng)前項目的已配置工作區(qū)的上下文中運(yùn)行命令,同時通過僅運(yùn)行此配置選項定義的工作區(qū)進(jìn)行過濾。
workspace
配置的有效值為:
為該npm init
命令設(shè)置時,可以將其設(shè)置為尚不存在的工作區(qū)的文件夾,以創(chuàng)建該文件夾并將其設(shè)置為項目中的全新工作區(qū)。
此值不會導(dǎo)出到子進(jìn)程的環(huán)境中。
false
Boolean
啟用在所有已配置工作區(qū)的上下文中運(yùn)行命令。
此值不會導(dǎo)出到子進(jìn)程的環(huán)境中。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: