【问题标题】:Update dependencies in NPM to resolve vulnerability更新 NPM 中的依赖项以解决漏洞
【发布时间】:2021-06-27 05:48:25
【问题描述】:

我在 github 中的 repo 显示以下警报:

Dependabot 无法将 ssri 更新为非易受攻击的版本。可以安装的最新版本是 6.0.1,因为存在以下冲突的依赖关系:

terser-webpack-plugin@2.3.8 通过 cacache@13.0.1 需要 ssri@^7.0.0

webpack@4.46.0 通过传递依赖需要 ssri@^6.0.1 cacache@12.0.4

最早的固定版本是8.0.1。

据我所知,我应该将 package.json 中的根包(即 terser-webpack-plugin)更新为较新的版本,但是如何确定可以支持依赖项的非易受攻击版本(在本例中为 ssri 8.0.1)的最低版本,因为我不想更新到太高的版本并冒着破坏事情的风险。我正在考虑手动检查 terser-webpack-plugin 的所有发布版本,但是这样检查非常繁琐并且似乎是错误的。有什么建议吗?

【问题讨论】:

    标签: npm npm-install dependabot


    【解决方案1】:

    为了加快进程并节省安装每个版本及其关联的依赖树,我们可以使用npm-remote-ls (https://stackoverflow.com/a/26005786/2815338)

    首先获取可用版本列表:

    > npm view terser-webpack-plugin versions
    [
      '1.0.0', '1.0.1', '1.0.2', '1.1.0', '1.2.0',
      ...
    

    然后为当前版本之后的每个版本运行 npm-remote-ls 并过滤相关依赖项,例如

    > npm-remote-ls terser-webpack-plugin@3.0.0 | grep ' ssri@'
       ???  ?????? ssri@8.0.1
       ???  ???  ???  ?????? ssri@6.0.2
    

    在这种情况下,terser-webpack-plugin@5.0.0 是第一个只有固定版本的 ssri (8.0.1),而 5.1.0 似乎根本不包含 ssri,大概是由于 webpack 不再依赖于缓存。

    注意问号似乎是由于npm-remote-ls 用于显示树结构的字符编码所致。您也可以在 PowerShell 中使用 Select-String,但这似乎会显示不同的(不正确的)字符。

    【讨论】:

      猜你喜欢
      • 2019-05-08
      • 2021-08-25
      • 2022-01-16
      • 2021-08-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2019-09-04
      • 2022-11-25
      相关资源
      最近更新 更多