如何更新npm嵌套(易受攻击)依赖?

U r*_*u s 18 node.js npm

Github已将我的应用锁定文件中的依赖项标记为易受攻击.

要修复它,我应该将该软件包更新到更新的版本.

如果我对易受攻击的软件包没有任何控制,我该怎么做呢,因为它嵌套在依赖树中?

抱歉,如果这是一个非常基本的问题,但我似乎没有找到任何有用的.

小智 17

NPM 8 引入了“覆盖”来帮助解决此类问题。您现在可以将直接依赖项的特定传递依赖项覆盖为您需要的版本。在您的情况下,您可以声明如下内容来修复易受攻击的依赖项。

{
  "overrides": {
    "your-direct-dependency": {
      "vulnerable-package": "fixed_version"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

更多详细信息@ https://docs.npmjs.com/cli/v8/configuring-npm/package-json#overrides


Tom*_*lam 7

你是对的 - 因为易受攻击的软件包位于你的一个依赖项中,如下所示:

Your Package -> Dependency -> Vulnerable package
Run Code Online (Sandbox Code Playgroud)

您将无法以未来npm install或未来的方式更新依赖项的依赖项yarn.

但是,您可以采取以下方法:

  • 维护者的错误:让他们更新他们的依赖关系和碰撞版本.这将解决您和依赖此软件包的同行的问题.
  • 有替代包吗?也许你可以使用不同的包而不是易受攻击的包.这将涉及对代码的一些更新,但从长远来看可能是最好的方法,特别是如果原始维护者没有响应.
  • 自己修复:分叉存储库并更新此副本中的依赖项.然后,您可以参考您的包裹package.json.

有关直接从Github repos安装的更多信息,请参阅此答案.

这种方法可以在短期内解决问题,但不建议您不要受益于维护者所做的任何错误修复,此外,当您完成此操作时,依赖关系可能已经更新了!