如何手动`npm审计修复`单个安全问题?

tzdcorbm  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(165)

我有许多npm audit报告的问题,通过运行npm audit fix,它确实修复了其中的一些问题。然而,这样做也会因为某种原因破坏我的构建。我想我知道是哪个修复程序导致了这个问题,但我仍然想修复其他问题。
有没有办法让npm在我运行npm audit fix时做任何事情,但只针对一个问题/依赖?
我知道我运行了npm i,但这也将更新的依赖项添加到package.json(即使带有--package-lock-only标志),这是我不希望的。我只想让npm更新package-lock.json,就像我运行npm audit fix时一样,但只是针对一部分问题。

yhxst69z

yhxst69z1#

您应该能够使用npm update来实现您想要的功能。要做什么略有不同,取决于您是否使用npm 7。x或npm6。x.我用的是7.x,这就是我在下面展示的。
假设npm audit生成如下输出:

# npm audit report

minimist  <0.2.1 || >=1.0.0 <1.2.3
Prototype Pollution - https://npmjs.com/advisories/1179
fix available via `npm audit fix`
node_modules/extract-zip/node_modules/minimist
  mkdirp  0.4.1 - 0.5.1
  Depends on vulnerable versions of minimist
  node_modules/extract-zip/node_modules/mkdirp
    extract-zip  <=1.6.7
    Depends on vulnerable versions of mkdirp
    node_modules/extract-zip

3 low severity vulnerabilities

To address all issues, run:
  npm audit fix

这表明我们需要更新minimistmkdirpextract-zip
让我们执行npm ls以了解我们正在处理的版本和依赖项。

$ npm ls minimist mkdirp extract-zip  
scrape-text@1.0.0 /Users/trott/ucsf-ckm/scrape-text
├─┬ puppeteer@2.1.1
│ └─┬ extract-zip@1.6.7
│   └─┬ mkdirp@0.5.1
│     └── minimist@0.0.8
└─┬ semistandard@14.2.0
  ├─┬ eslint@6.4.0
  │ ├─┬ file-entry-cache@5.0.1
  │ │ └─┬ flat-cache@2.0.1
  │ │   └─┬ write@1.0.3
  │ │     └── mkdirp@0.5.3 deduped
  │ └─┬ mkdirp@0.5.3
  │   └── minimist@1.2.5 deduped
  └─┬ standard-engine@12.0.0
    └── minimist@1.2.5

$

因为着色是很重要的,这里是最后一个的截图:

让我们看看如果我们运行npm update minimist来更新这个包会发生什么。让我们使用npm ls minimist来看看是否有任何变化。(您还可以查看package-lock.json文件是否发生了更改并进行比较。)

$ npm ls minimist
scrape-text@1.0.0 /Users/trott/ucsf-ckm/scrape-text
├─┬ puppeteer@2.1.1
│ └─┬ extract-zip@1.6.7
│   └─┬ mkdirp@0.5.1
│     └── minimist@0.0.8
└─┬ semistandard@14.2.0
  ├─┬ eslint@6.4.0
  │ └─┬ mkdirp@0.5.3
  │   └── minimist@1.2.5 deduped
  └─┬ standard-engine@12.0.0
    └── minimist@1.2.5

$

不,没有变化。我们还有以前的版本。好,让我们试试下一个,它是mkdirp

$ npm update mkdirp

changed 1 package, and audited 244 packages in 1s

3 low severity vulnerabilities

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
$

changed 1 package似乎很有希望。让我们看看它做了什么:

$ npm ls mkdirp    
scrape-text@1.0.0 /Users/trott/ucsf-ckm/scrape-text
├─┬ puppeteer@2.1.1
│ └─┬ extract-zip@1.6.7
│   └── mkdirp@0.5.1
└─┬ semistandard@14.2.0
  └─┬ eslint@6.4.0
    ├─┬ file-entry-cache@5.0.1
    │ └─┬ flat-cache@2.0.1
    │   └─┬ write@1.0.3
    │     └── mkdirp@0.5.5 deduped
    └── mkdirp@0.5.5

mkdirp更新为0。5.5.你可以测试一下,看看它是否还能正常工作。
如果您现在执行npm update extract-zip,那么将导致干净的npm audit运行。
希望这能让您了解如何在不修改package.json的情况下一次更新一个包。祝你好运!

相关问题