javascript - 解决 package-lock.json 中的漏洞的最佳方法?

标签 javascript node.js security package-lock.json

我收到关于package-lock.json中列出的软件包中的漏洞的警告。我的 Node.Js 项目的文件。

我可以关注advice here并使用 npm install <package-name> 重新安装所有软件包,但是,我还使用其他使用这些软件包旧版本的 npm 项目,这些项目不会通过简单的 npm install 重新安装。 .

这是否意味着我必须去 package-lock.json并手动将所有依赖项更改为最新版本?

如果它们坏了怎么办?

是否有一种正确的更新方法可以确保您不会破坏依赖于旧版本的其他软件包?

最佳答案

如果问题出在您直接依赖的包上,您应该直接更新它并将其保存到 package.json + 在 package-lock.json 中锁定其版本code> 在此过程中执行类似 npm install your-dependency@latest --save[-dev] 的操作。但请注意:可能会有一些重大更改会破坏您的代码(例如,如果依赖项在主要版本更新期间发生了一些弃用和重大更改)。

但是,如果问题来自于您的某个依赖项的依赖项,那么解决该问题的最佳方法是向父包的维护者提出问题(可能需要 PR 来帮助他们),然后当他们提供更新,更新项目中的依赖项本身。

您也可以使用npmaudit来解决一些问题(可能不是全部,并且如果依赖项特别需要子依赖项版本,它不会更新它,因为它可能会破坏事情),但是为您和其他人解决问题的唯一最佳方法是让您想要更新其依赖项的模块的维护者(如果可以的话)。

如果依赖项仍然容易受到攻击,重新安装所有内容都无法解决问题。安装并不会神奇地解决问题,人们会这样做:-) 但是,您可能想要做的是使用 npm outdated 列出所有具有可用更新版本的软件包,并尝试一一更新它们,然后查看您的漏洞是否已解决(npmaudit)。

还有一件事:在 package-lock.json 中手动更改内容通常是一种不好的做法。该文件只能由您的 npm install (或类似)脚本之一自动生成。 npm 使用此文件来解析全新安装时的确切依赖项/子依赖项版本列表,这实际上是确保所有使用或从事该项目的人员都拥有完全相同版本的唯一最佳方法。他们的依赖性,所以最好是正确的。始终提交您的 package-lock.json!

关于javascript - 解决 package-lock.json 中的漏洞的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53995567/

相关文章:

node.js - localtunnel.me 固定 url 重新生成 eveytime 服务器重新启动

validation - 我是否应该对RSA软件包生成的用户 key 对进行验证,以确保 key 对是唯一的(其他用户没有相同的 key 对)?

安卓反破解,到底值不值?

javascript - 在node js中将html表数据插入mysql数据库

javascript - n.getFullYear 不是 d3 中的函数错误

javascript - 在 JavaScript 中使用 Chai 测试无效参数

java - 将空字符串设置为属性文件中键的值

javascript - 丑化后无法加载大型 JavaScript 文件 ExpressJS

javascript - 热模块更换会破坏自定义加载程序

node.js - Node.js 中 process.emit 的事件范围