我们到底要维护没有安全漏洞的package-lock.json文件?为什么不删除它们或让它们过时呢?

问题描述

package-lock.json为上次运行npm update时安装的所有依赖关系和可传递依赖关系存储一组精确版本。鼓励您将package-lock.json提交回您的仓库。

我可以找到的package-lock.json的唯一真实使用者是npm ci,它准确地再现了package-lock.json中定义的状态,因此您可以确保在同一CI上运行CI您在最后写入package-lock.json的开发机上拥有的依赖项。

package-lock.json似乎用来做的另一件事是产生大量的安全警告。我已经对已提交的package-lock.json文件进行了Github的Dependabot PR-ing更改,并抱怨说package-lock.json是它“发现”了无法自动为我修复的其他漏洞的地方。我怀疑这些无法解决的问题是我的或依赖项的package.json中的问题,由最高版本要求(不包括违规模块的固定版本)引起,但这不是Dependabot所说的:

Dependabot saying I have a problem with package-lock.json that it can't fix

如果package-lock.json仅使用npm ci,那么在那里引用过时且易受攻击的程序包版本怎么会在我的CI系统之外的任何地方创建漏洞?实际安装软件包的人是否不会使用package.json解决依赖关系,并因此在所有漏洞可用时自动获得修复(除非我自己有违规的最大版本限制)?我的回购中的这些PR真的只是我和我的所有用户/协作者在我们的计算机上运行npm update的建议吗?如果是这样,那么Dependabot的作者是谁通过拉取请求来完成此操作的?

如果我从源代码管理中删除package-lock.json,这是否可以正确解决package-lock.json所示的漏洞(因为该文件不再存在,无法诱使某人安装我的依赖项的旧版本)?还是只会使漏洞扫描程序无法扫描我的存储库(即它们是否依靠package-lock.json而不是自己package.json解决依赖关系),并让我不知道何时需要npm update

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...