如何限制 NPM 安装
How to restrict NPM installs
在讨论 recent malware attack using a popular NPM package 时(并且从我们的代码库中删除了这个包之后),我开始研究限制 npm install
命令的方法。到目前为止,我还没有找到任何方法来限制开发人员可以安装的内容。
这对每个人都有好处的原因有两个:
- 进一步防止恶意软件包被安装。
- 避免在包名打错时意外安装包
关于#1,想法是每个团队都可以创建一个批准的包名称列表,可以在 npm install
实际运行之前对其进行检查 - 本质上是创建一些npm 包的审查过程类型。
关于 #2,我们的团队实际上受到了在 NPM 上删除这个包的影响 - 但我们拥有这种依赖性的唯一原因是因为 意外安装了一个包 并且有一段时间没有引起注意。这是我认为发生的事情:
- 开发人员想要安装一个包并打算键入
npm install --save somepackagehere
(注意破折号 )
- 开发者不小心输入了
npm install save
(没有破折号 ),因此安装了 save npm package which has a dependency on event-stream, which had a dependency on flatmap-stream.
节点版本:9.9.1
NPM 版本:6.4.1
问题
是否有现有的方法可以实现我上面描述的不依赖于手动代码审查的方法?
正如评论中所建议的那样,只需让代码审查检查 package.json
更改就可以达到 "restricting" NPM 包安装的目的。
在讨论 recent malware attack using a popular NPM package 时(并且从我们的代码库中删除了这个包之后),我开始研究限制 npm install
命令的方法。到目前为止,我还没有找到任何方法来限制开发人员可以安装的内容。
这对每个人都有好处的原因有两个:
- 进一步防止恶意软件包被安装。
- 避免在包名打错时意外安装包
关于#1,想法是每个团队都可以创建一个批准的包名称列表,可以在 npm install
实际运行之前对其进行检查 - 本质上是创建一些npm 包的审查过程类型。
关于 #2,我们的团队实际上受到了在 NPM 上删除这个包的影响 - 但我们拥有这种依赖性的唯一原因是因为 意外安装了一个包 并且有一段时间没有引起注意。这是我认为发生的事情:
- 开发人员想要安装一个包并打算键入
npm install --save somepackagehere
(注意破折号 ) - 开发者不小心输入了
npm install save
(没有破折号 ),因此安装了 save npm package which has a dependency on event-stream, which had a dependency on flatmap-stream.
节点版本:9.9.1
NPM 版本:6.4.1
问题
是否有现有的方法可以实现我上面描述的不依赖于手动代码审查的方法?
正如评论中所建议的那样,只需让代码审查检查 package.json
更改就可以达到 "restricting" NPM 包安装的目的。