2022-05-04

解決 npm install 時出現警告 minimist 風險問題

應該有很有一段時間,在手上的專案在部署時,進行「npm install」,雖然過程沒有什麼問題,但最後都會出現一些風險警告,然後輸入「npm audit」查看時,會發現排在第一個的都是

minimist <= 1.2.5

Serverity: ciritical

Prototype Pollution in minimist - xxxxxxxx

...

雖然是警告,但這層級有到 ciritical …一直讓我覺得要解決(但其實經手了幾個案子…現在新案子開啟時我才想到…)

那這邊提供兩個解法

  1. https://sca.analysiscenter.veracode.com/vulnerability-database/security/prototype-pollution/javascript/sid-34731
    • 其實應該不少人看到這裡會覺得「呃,我的 packages.json 的 dependencies 中就沒有 minimist 呀,那為什麼會出現這個風險警告」…是的,其實我本來也是一樣的疑惑…但仔細瞭解 npm 的作法後大概知道,其實有不少的東西是因為 packages.json 中的其他套件有用到 minimist 的關係;以我自己的檢查,雖然我 packages.json 中沒有指定使用 minimist ,但部份其他會用到的套件自己的 packages.json 中有列出來,但實際上下載下來的 minimist 也已經是 1.2.6 版了,但因為 npm 的警告是依 packages.json 的設定在走的,所以 npm 檢查到某個套件要求要裝 minimist x.x.x 以上的版本,只是寫在 packages.json 中的 x.x.x 不是 ^1.2.5 ,所以就告警了
    • 所以解決的方法就是直接在最外面專案的 packages.json 指定下載 minimist 1.2.6 即可
  2. https://github.com/substack/minimist/issues/164
    • 利用 npm 某一版之後內建 npm-force-resolutions 功能,可在 packages.json 建立 resolutions 區塊來指定要將 minimist 定義轉移至 minimist-list@2.2.0
    • 我是使用這個方式
minimist 的問題解決了,但現在還有出現兩個警告讓我看了不舒服

npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1

是說,這邊的警告只是告知使用者,這兩個套件已經被棄用,且只適用在 legacy 模式下…也就是說…原則上上面的警告是提醒,不是說有什麼問題…

只是,單純看了會不舒服…網路有說不然就把告警的訊息關閉,但就喪失「提醒」的意義了。

我會再找找看有沒有比較兩全的作法…

沒有留言: