7

为什么最近几年类似 faker.js 这样作者在开源包下毒的事件都发生在 Node.js?是其它语...

 1 year ago
source link: https://www.v2ex.com/t/888905
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  程序员

为什么最近几年类似 faker.js 这样作者在开源包下毒的事件都发生在 Node.js?是其它语言的包管理器有什么预防这种行为的机制吗? Python 的 pypi 包作者可以在不改版本号的情况下换包吗?

  edis0n0 · 2 小时 42 分钟前 · 1070 次点击
16 条回复    2022-10-22 12:41:35 +08:00
chrawsl

chrawsl      2 小时 34 分钟前

pypi 包版本号一样不给传的
charlie21

charlie21      2 小时 33 分钟前

恶劣结果已经消除,faker.js 已经被社区挽救回来了啊
edis0n0

edis0n0      2 小时 30 分钟前

@charlie21 #2 那 npm 社区有采取什么措施防止(其它作者)这种情况再次发生了吗,现在不是大公司的 npm 包都不敢装了
moen

moen      2 小时 24 分钟前

NuGet 是上传了就不能改,连删除都不允许
wgoose

wgoose      2 小时 19 分钟前

@edis0n0 现在吃的都是科技与狠活,是不是所有吃的都不能吃了。
statumer

statumer      2 小时 9 分钟前 via iPhone

C++很有效地预防了包管理器引入依赖投毒的问题,因为 C++就没有包管理器。
npm 有 lock 机制所以供应链投毒顶多只影响开发阶段。
如果有更进一步的需求你可以维护一个私有 npm registry ,只存你信任的包版本。只不过每次升级社区依赖版本都要人工审核。
edis0n0

edis0n0      2 小时 7 分钟前

@statumer #6 npm 作者有可能上传同版本号包覆盖已有包吗
DeWjjj

DeWjjj      2 小时 6 分钟前

每个版本更新都等三月再用。
statumer

statumer      2 小时 4 分钟前 via iPhone

这让我想到,你可以开一个公司,公司提供一个收费的 npm registry ,这个 npm registry 上所有的包都是你让员工人工审核过的无毒代码,名字可以叫 trusted registry 。用你这个公司的 registry 的用户要按流量和按月订阅付费。
statumer

statumer      1 小时 56 分钟前 via iPhone

@edis0n0 首先,这和同版本号没有一毛钱关系。社区开发者上传一个 minor version release 就行了。在产物构建和部署阶段,有 lock 机制所以和版本号没有关系。
其次,2014 年 2 月以后 npm 不允许上传同版本号。
learningman

learningman      1 小时 40 分钟前

pypi 上一堆只差一个字符的投毒。
otakustay

otakustay      1 小时 25 分钟前

npm 也是不允许覆盖同版本的,但很多开发者没有用 package-lock ,导致新版本会被装上去
eason1874

eason1874      1 小时 23 分钟前

自己不锁版本,关作者后续更新什么事。

就算作者无恶意,只是大版本更新推出新的 API ,不兼容旧 API ,你不锁版本一样完蛋

白嫖就要有白嫖的觉悟,开源只是提供当前版本,不是提供长期支持服务
wu67

wu67      1 小时 22 分钟前

理论上来讲, 一个领域 /一个编程模式 如果要依赖三方的包进行, 那就会有这类的风险.

事实上开源只是公开源代码, 但是并没有多少人会去完整阅读它, 也没有多少人能去完整阅读它, 人的精力是有限的, 并且绝大多数开源项目都没有一个完善的技术文档、甚至有些连注释都没有, 要去理解这么多代码实在是太难了.

除非是知名社区或者商业公司像 Mozilla 微软 苹果 Linux 这样的进行背书、来搞‘官方’一点的开发生态, 其他的小团队 /个人开发者项目多少都会有风险. 而个人开发最容易造轮子的语言 /领域是哪些呢? 答案是 JS / Node / 前端.

所以生态百花齐放的, 相对的爆炸的概率就会高很多; 生态较单一、由唯一组织进行维护的, 又容易陷入一个版本跑到天荒地老的情况, 例如 Java jdk8, c 艹 9, Windows xp / 7, 典型的又不是不能用, 升级什么
Macv1994

Macv1994      1 小时 19 分钟前

所以新轮子还是过段时间再用比较好

Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK