Github已将我的应用锁定文件中的依赖项标记为易受攻击。
要修复它,我应该将该软件包更新到更新的版本。
如果我对易受攻击的软件包没有任何控制权,那么该怎么做呢,因为它嵌套在依赖关系树中?
道歉,如果这是一个非常基本的问题,但我似乎没有找到任何有用的。
答案 0 :(得分:6)
你是正确的 - 因为易受攻击的软件包位于你的一个依赖项中,如下所示:
Your Package -> Dependency -> Vulnerable package
您将无法更新依赖关系'依赖的方式可以在未来npm install
或yarn
中存活。
但是,您可以采取以下方法:
package.json
。See this answer for more information on installing directly from Github repos.
这种方法可以在短期内解决问题,但不建议,因为您不会受益于维护者所做的任何错误修复,此外,当您“#”之前。完成此操作后,依赖关系可能已经更新了!
答案 1 :(得分:1)
我认为,有一种 (可能)通过depth
标志来实现这一目标。
npm --depth 2 update vulnerable-package
caveat 1 :官方npm update documentation建议使用9999深度来递归检查所有依赖项。但是在我的设置中,会导致错误或npm冻结。因此,我使用现实的深度1或2。(默认值为0,表示仅直接依赖)
caveat 2 :仅当嵌套软件包的可用更新版本(带有漏洞修复程序)仍然适合您的依赖项的版本范围时,此方法才有效。因此,如果这是您的依赖关系树:
Your Package -> Dependency@^1.0.0 -> Vulnerable_package@^2.1.0
该漏洞修复程序处于Vulnerable_package 3.0.0版中,因此它将无法正常工作,因为npm update将仅更新为仍然适合您依赖项版本范围的最高版本。 (在本例中是最高的2.x.x版本)
答案 2 :(得分:0)
第一个更新命令
npm install -g npm
然后,删除易受攻击的人
npm审核修复程序--force
答案 3 :(得分:0)
如此处的说明:https://stackoverflow.com/a/17423915,您可以使用npm shrinkwrap
明确告诉npm获取所需的嵌套依赖项版本。