Javascript 解决package-lock.json中漏洞的最佳方法是什么?

Javascript 解决package-lock.json中漏洞的最佳方法是什么?,javascript,node.js,security,package-lock.json,Javascript,Node.js,Security,Package Lock.json,我的Node.Js项目的package lock.json文件中列出的包中有漏洞,我收到了警告 我可以使用npm安装重新安装所有软件包,但是,我也使用其他使用这些软件包的旧版本的npm项目,这些软件包不会通过简单的npm安装重新安装 这是否意味着我必须转到package lock.json并手动将所有依赖项更改为最新版本 如果它们坏了怎么办 是否有一种适当的更新方法可以确保您不会破坏依赖于旧版本的其他软件包?如果问题发生在您直接依赖的软件包上,您应该直接更新它并将其保存到package.json

我的Node.Js项目的
package lock.json
文件中列出的包中有漏洞,我收到了警告

我可以使用
npm安装
重新安装所有软件包,但是,我也使用其他使用这些软件包的旧版本的npm项目,这些软件包不会通过简单的
npm安装
重新安装

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

如果它们坏了怎么办


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

如果问题发生在您直接依赖的软件包上,您应该直接更新它并将其保存到
package.json
+在此过程中通过执行类似于
npm的操作将其版本锁定在
package lock.json
-dependency@latest--保存[-dev]
。但是要小心:可能会有破坏性的更改会破坏您的代码(例如,在依赖项之间有一个主要的版本更新,其中包含一些不推荐和破坏性的更改)

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

您还可以使用
npm audit
来解决一些问题(可能不是全部,如果依赖项特别需要子依赖项版本,它将不会更新,因为它可能会破坏一些东西),但是,对于您和其他人来说,解决这个问题的最佳方法是让您想要更新其依赖关系的模块的维护人员,如果他们可以的话

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


还有一件事:在
package lock.json
中手动更改内容通常是一种不好的做法。此文件应仅由
npm安装
(或类似)脚本之一自动生成。npm使用此文件来解析新安装上的确切依赖项/子依赖项版本列表,它确实是确保所有使用或处理此项目的人员的所有依赖项都具有完全相同的版本的唯一最佳方法,因此它最好是正确的。始终提交您的
包锁.json

如果问题发生在您直接依赖的软件包上,您应该直接更新它并将其保存到
package.json
+在过程中通过执行类似于
npm的操作将其版本锁定在
package lock.json
-dependency@latest--保存[-dev]
。但是要小心:可能会有破坏性的更改会破坏您的代码(例如,在依赖项之间有一个主要的版本更新,其中包含一些不推荐和破坏性的更改)

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

您还可以使用
npm audit
来解决一些问题(可能不是全部,如果依赖项特别需要子依赖项版本,它将不会更新,因为它可能会破坏一些东西),但是,对于您和其他人来说,解决这个问题的最佳方法是让您想要更新其依赖关系的模块的维护人员,如果他们可以的话

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


还有一件事:在
package lock.json
中手动更改内容通常是一种不好的做法。此文件应仅由
npm安装
(或类似)脚本之一自动生成。npm使用此文件来解析新安装上的确切依赖项/子依赖项版本列表,它确实是确保所有使用或处理此项目的人员的所有依赖项都具有完全相同的版本的唯一最佳方法,因此它最好是正确的。始终提交您的
包锁.json

在.gitignoreoh non中添加package-lock.json,不要照saurabh rathod说的做!!!这个主意太糟糕了,无论如何也解决不了你的问题…在.gitignoreoh non中添加package-lock.json,不要照saurabh rathod说的做!!!这个主意太糟糕了,而且无论如何也解决不了你的问题……回答得好,我要补充的是,你应该确保你的组织明白,修复一个被审计的漏洞并不总是你能马上做的事情。记录并跟踪所有漏洞,当然,但有时可能需要几天、几周甚至几个月才能找到正确的软件包维护人员,让他们修复漏洞,更新到适当的版本,等等。回答得好,我还要补充一点,您应该确保您的组织了解修复已审计漏洞并不总是您可以立即完成的事情。记录并跟踪所有漏洞,当然,但有时可能需要几天、几周甚至几个月才能找到正确的软件包维护人员,让他们修复漏洞,更新到适当的版本,等等。