• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Mithril
V2EX  ›  程序员

用过 Colors 和 Faker.js 的今天不要更新项目依赖

  •  1
     
  •   Mithril · Jan 10, 2022 · 20360 views
    This topic created in 1759 days ago, the information mentioned may be changed or developed.

    作者在 NPM 包里放了死循环。如果你的项目有直接或者间接引用的话,很可能会挂掉。 https://www.bleepingcomputer.com/news/security/dev-corrupts-npm-libs-colors-and-faker-breaking-thousands-of-apps/

    项目的依赖管理还是要谨慎一些,特别是当不指定具体版本号的时候,一旦更新很可能会炸掉。

    NPM 这种动不动几百上千个依赖的,真要认真管起来的话简直是噩梦。

    125 replies  •  2022-01-11 21:35:04 +08:00
    1  2  
    ❮ ❯
    yuthelloworld
    yuthelloworld
    Jan 10, 2022
    1
    无语了
    sadfQED2
    sadfQED2
    Jan 10, 2022 via Android❤️4
    2
    这就属于作恶了
    Rrrrrr
    Rrrrrr
    Jan 10, 2022 via iPhone
    3
    npm 不能锁包真的……
    anonydmer
    anonydmer
    Jan 10, 2022
    4
    每年都要看几个 npm 的瓜,前端故事就是多啊 /狗头
    FightPig
    FightPig
    Jan 10, 2022
    5
    npm 的瓜一直没停过
    x86
    x86
    Jan 10, 2022❤️12
    6
    前端娱乐圈就开始整活了
    stkstkss
    stkstkss
    Jan 10, 2022 via iPhone
    7
    把 package 依赖里面版本号前面的^去掉
    cweijan
    cweijan
    Jan 10, 2022
    8
    才知道这个 faker.js 的作者也是 colors 的作者, 这个周下载两千万, 牛
    Mithril
    Mithril
    OP
    Jan 10, 2022
    9
    @stkstkss 麻烦的在于间接引用,你也不知道你哪个依赖库就引了它进来。。。。
    最好搜一下 node_modules 看看
    chenmobuys
    chenmobuys
    Jan 10, 2022
    11
    可以说是前端自己一手造成的,依赖的太多太深了,导致别人删除一个库,全崩了
    aboat365
    aboat365
    Jan 10, 2022
    12
    发生什么事了,报复社会?
    7gugu
    7gugu
    Jan 10, 2022
    13
    之前是不让大公司白嫖,现在做这种事情就是恶心同行人了啊!
    wonderfulcxm
    wonderfulcxm
    Jan 10, 2022 via iPhone
    14
    这他喵的这个包管理机制就有问题
    wu67
    wu67
    Jan 10, 2022
    15
    @wonderfulcxm 本来就是个沉重的历史包袱 hhh
    binux
    binux
    Jan 10, 2022❤️8
    16
    project owner 有向自己的项目提交任何内容的自由 🐶
    SummerDruid
    SummerDruid
    Jan 10, 2022❤️45
    17
    想起来一句中二名台词:“让世界感受痛楚”
    U7Q5tLAex2FI0o0g
    U7Q5tLAex2FI0o0g
    Jan 10, 2022❤️2
    18
    贵圈真乱( doge
    proger
    proger
    Jan 10, 2022
    19
    @vone 请教一下,for 循环删除一个分号就行了吗?这是啥原理啊
    hpuchenkai
    hpuchenkai
    Jan 10, 2022
    20
    吓得我看了下项目,还好用的是 chalk
    Pastsong
    Pastsong
    Jan 10, 2022
    21
    所以依赖版本记得用 fixed-version
    paoqi2048
    paoqi2048
    Jan 10, 2022
    23
    看来是为了引起更多人的注意
    yangzzzzzz
    yangzzzzzz
    Jan 10, 2022
    24
    @proger 分号那个是格式化问题吧 应该是下面那个 i%333
    IsaacYoung
    IsaacYoung
    Jan 10, 2022 via iPhone
    25
    娱乐圈
    catoncat
    catoncat
    Jan 10, 2022 via iPhone
    26
    @yangzzzzzz 分号是语法错误。

    作者不是被 github 封号了吗,怎么还能提交?
    Dockerfile
    Dockerfile
    Jan 10, 2022❤️1
    27
    @crs0910 谁说作者被 github 封号了啊
    vone
    vone
    Jan 10, 2022❤️5
    28
    @proger 原来 for 循环括号前面的分号属于语法错误,会导致程序直接挂掉,他那个 "Fix bug" 提交修复的是语法报错,死循环仍然存在。
    (修复的是不能正常死循环的 bug ,所以这个提交仍然是个恶作剧)
    Henry007
    Henry007
    Jan 10, 2022
    29
    贵圈真乱啊
    nojsja
    nojsja
    Jan 10, 2022
    30
    suspend 应该是账户暂停的状态
    alexkkaa
    alexkkaa
    Jan 10, 2022 via Android
    31
    作者好像家里失火失去财产 又被调查是否制造 boom 自己又受了伤 我猜他现在也找不到工作

    用爱发电持续不下去了
    Biwood
    Biwood
    Jan 10, 2022❤️19
    32
    不觉得乱,也不觉得作恶,支持作者,话说 npm 体系现在才出现问题吗,那说明社区的自律性已经很强了
    gofishing
    gofishing
    Jan 10, 2022
    33
    @Biwood 之前 npm 就有过删库事件. 然后一堆项目跑不起来.
    chuyik
    chuyik
    Jan 10, 2022
    35
    今天就中招了,还好只是跑了个 demo
    mywaiting
    mywaiting
    Jan 10, 2022❤️19
    36
    感觉会有一个很值得思辨(撕逼)的问题:

    我个人开源提交到 NPM 的包(被无数引用的包),是否还属于我个人?

    如果不属于我个人,这个包属于谁?

    如果不属于我个人,那么这个为啥是我提交以及开源维护?

    ~~~ 抛砖引玉 ~~~
    wsseo
    wsseo
    Jan 10, 2022
    37
    开始整活
    SummerDruid
    SummerDruid
    Jan 10, 2022❤️19
    38
    @Biwood 前几年就出过一次事故了。当时有个老哥 Azer 写了个叫 kik 的模块,结果和某家公司的产品重名了被发律师函威胁,Azer 老哥不答应,然后这家公司直接找 npm 公司处理,npm 直接不经这个作者的同意,擅自把这个 kik 包的权限转移给了这个公司,Azer 老哥一怒之下把所有自己写的 npm 包 unpublish 了,结果其中有个叫 left-pad 的模块被广泛使用,导致 Babel 、ReactNative 等大量工具构建失败,npm 公司最后赶忙灭火强制恢复了这个 leftpad 模块,而且还是不道歉,最后这件事貌似也就这么不了了之了。
    meteor957
    meteor957
    Jan 10, 2022
    39
    娱乐圈名不虚传
    U7Q5tLAex2FI0o0g
    U7Q5tLAex2FI0o0g
    Jan 10, 2022
    40
    @SummerDruid #38 不懂就问,npm 的包名不包含作者名字吗,比如 user1/kik user2/kik company1/kik ,所以 npm 库里只允许存在一个 kik 么,太先进了,太牛逼了,瑞思拜
    qxqsxbd
    qxqsxbd
    Jan 10, 2022
    41
    @littleylv 最开始的时候只有全局的命名空间,一个人占了别人就用不了了,后来才出现个人命名空间
    SummerDruid
    SummerDruid
    Jan 10, 2022
    42
    @littleylv 没错,就是你想的那样,npm 不使用你提及的作者名 /模块名的方式定位唯一模块,也不像 Maven 一样有 group 和 artifact 双重命名,它的包名唯一且先到先得。
    ccppgo
    ccppgo
    Jan 10, 2022
    43
    难怪别人都说前端娱乐圈
    jasonkayzk
    jasonkayzk
    Jan 10, 2022❤️1
    44
    刚开始搞前端的时候就感觉 npm 这个东西迟早会出问题…
    coderluan
    coderluan
    Jan 10, 2022❤️50
    45
    之前很多人说当事人开源了就要做好心里准备,那么现在同样的之后用开源代码的人也要做好心里准备,Fair Play.
    ykk
    ykk
    Jan 10, 2022❤️1
    46
    心理准备
    hengyunabc
    hengyunabc
    Jan 10, 2022❤️1
    47
    所以拿到 npm 项目,第一时间把版本号全改为固定的,不然过几个月还能不能 build 就看烧高香了。

    没有办法理解为什么 npm 这么喜欢所谓的版本自动升级,这个不是把性命交别人手上么。
    hahastudio
    hahastudio
    Jan 10, 2022
    48
    现在 npm 在我看来就是用对代码的控制来换取开发的便捷
    也许再出几个这样的事件,风险收益比就不行了
    otakustay
    otakustay
    Jan 10, 2022
    49
    @mywaiting #36 属于你自己,你既有任意修改发布的权利,也有因为包带来危害而个人形象受影响的风险
    vanton
    vanton
    Jan 10, 2022
    50
    支持作者,前端真乱。
    😁😂😃
    NCZkevin
    NCZkevin
    Jan 10, 2022
    51
    @alexkkaa 看 github 评论里有说是作者本人在家里搞事情,结果把家给弄起火了,然后在推上乞讨。
    https://github.com/Marak/colors.js/commit/074a0f8ed0c31c35d13d28632bd8a049ff136fb6 这是我见过的 commit 里最长的楼,节目效果太强了
    Wincer
    Wincer
    Jan 10, 2022
    52
    @Jwyt #27 他自己在推上说的被 GitHub 冻结了,https://twitter.com/marak/status/1479200803948830724
    proger
    proger
    Jan 10, 2022
    53
    @vone 懂了 ,谢谢老哥~
    stevenhawking
    stevenhawking
    Jan 10, 2022
    54
    以后开源项目都得提供一个 reputation score, 低信誉的人的项目, GitHub 、Npm 等社区和工具不予以推广.
    starrys
    starrys
    Jan 10, 2022
    55
    哟,原来 npm 已经被 GitHub 收购了。
    来源: https://www.npmjs.com/about
    npm, Inc. is a company founded in 2014, and was acquired by GitHub in 2020. npm is a critical part of the JavaScript community and helps support one of the largest developer ecosystems in the world.
    123jiayue
    123jiayue
    Jan 10, 2022 via iPhone
    56
    为什么做这种降低自己信誉的事 难到以后不干这行了
    ncepuzs
    ncepuzs
    Jan 10, 2022
    57
    贵圈真乱
    acdfjelxe
    acdfjelxe
    Jan 10, 2022
    58
    @SummerDruid 神罗天征 🐶
    v2lf
    v2lf
    Jan 10, 2022
    59
    @proger 分号 会变成两个语句块,
    abersheeran
    abersheeran
    Jan 10, 2022❤️12
    60
    开源运动作为地球上唯一一个还在运作的共产主义运动,现在看来无疑是失败的。在没有消灭资产阶级之前,一切所谓的国际主义、共产主义都只是在剥削同为无产阶级的人为资产阶级打工罢了。
    dianso
    dianso
    Jan 10, 2022
    61
    作者网上要钱要了一段时间了,没人给钱,气得慌,凭什么你们都用我的项目赚钱,给你们个教训。
    forgottencoast
    forgottencoast
    Jan 10, 2022
    62
    @123jiayue 大部分人知道他是谁吗? 他下次只要换个 Id 在发布,只要东西好一堆人用。
    daimubai
    daimubai
    Jan 10, 2022
    63
    @yangzzzzzz 应该是是 Infinity ,在 js 中表示无穷大的意思,下面那个 i%333 不影响
    WeiShenMe
    WeiShenMe
    Jan 10, 2022
    64
    支持作者
    linora
    linora
    Jan 10, 2022
    65
    贵圈真乱
    fpure
    fpure
    Jan 10, 2022
    66
    还是 rust 好,rust 的包提交到 crates.io 之后就再也不能修改和撤回
    ryh
    ryh
    Jan 10, 2022
    67
    其实其他的包依赖一样会出这样的事,Go / Swift 这种依赖 GitHub 的也很危险,决定从今天起依赖全部 fork 😂
    qyzxgl
    qyzxgl
    Jan 10, 2022❤️1
    68
    支持作者,资本家🙂😑🙄
    Dockerfile
    Dockerfile
    Jan 10, 2022
    69
    @Wincer github 还有这种操作的吗,见识到了
    liaohongxing
    liaohongxing
    Jan 10, 2022❤️1
    70
    Retool 抄袭 faker.js 作者的 faker cloud 的 CEO 回应 :

    https://news.ycombinator.com/item?id=27252331
    bwangel
    bwangel
    Jan 10, 2022
    71
    傻逼才做开源
    wu67
    wu67
    Jan 10, 2022
    72
    @ryh 别的不太清楚, 前端的 fork 不过来的, package.json 里面可能只写了 20 来个依赖, 但是依赖的包他也是有各种依赖的, 然后树形遍历套娃, 最好整个 node_module 里面的依赖可能有几百上千个...
    lm930129
    lm930129
    Jan 10, 2022
    73
    @ryh go 并不是依赖 github ,只是依赖 git 这个东西做管理,你 fork 的包一样引用。
    yunyuyuan
    yunyuyuan
    Jan 10, 2022
    74
    支持作者
    paopjian
    paopjian
    Jan 10, 2022
    75
    一袋米要扛几楼
    daquandiao2
    daquandiao2
    Jan 10, 2022
    76
    外国人也 666 ?
    karloku
    karloku
    Jan 10, 2022❤️2
    77
    用 MIT License 就要做好被白嫖的准备. 这协议除了留个 Copyright 之外几乎什么都给出去了.

    用开源项目不锁好版本号, 不测试版本更新, 那后果也是自负. 外部依赖本来就是系统风险的一部分.
    skiy
    skiy
    Jan 10, 2022❤️2
    78
    @ryh 哈哈。用 Go 时有碰到过一次七牛云某个 SDK 仓库删了,我自己再根据仓库名从别人 Fork 的项目补回来。

    说实话,这种事是不可避免的。

    有个 BaiduPCS-Go 的项目的主仓库被作者删了,我也直接从别的地方 fork 过来,作者名下的依赖我也全部 fork 过来为,并将主仓库的依赖也全改了。

    这种事情,怪不得作者了。有时候我自己也会删库,所以没有权利双标。

    现在我有些仓库是 0 fork 的,我会自己决定删不删。那些有 fork 的,我会看情况移到一个新建的“trans”组织里专门存放一些弃更的仓库。
    abcbuzhiming
    abcbuzhiming
    Jan 10, 2022
    79
    所以为啥 npm 老出这种问题,这么久了,nodejs 社区还是建立不起一个依赖库审核机制吗?不是黑客入侵,就是作者删库
    raysonlu
    raysonlu
    Jan 10, 2022
    81
    nodejs 方案不选用的理由+1 ?
    2kCS5c0b0ITXE5k2
    2kCS5c0b0ITXE5k2
    Jan 10, 2022
    82
    @daquandiao2 欧美文化圈厉害的 666 是撒旦的数字.
    2i2Re2PLMaDnghL
    2i2Re2PLMaDnghL
    Jan 10, 2022
    83
    @karloku 你说的是除了留个 [Attribution] 以外都给出去了吧(
    hatsuyuki
    hatsuyuki
    Jan 10, 2022
    84
    @abersheeran 人性如此,资产阶级消灭了只会产生新的权贵资产阶级,只要有管理关系,就会有阶级
    codder
    codder
    Jan 10, 2022
    85
    我靠,我们的项目里也用到了
    xiaojun1994
    xiaojun1994
    Jan 10, 2022
    86
    说的好像只有前端会遇到似的,依赖 github 仓库的包一大把,只要人家想,你照样会出事
    karloku
    karloku
    Jan 10, 2022
    87
    @2i2Re2PLMaDnghL 对, 我意思 MIT 就只要求写个 "Copyright Notice" (翻译: 冤有头债有主(
    guanhui07
    guanhui07
    Jan 10, 2022
    88
    不能锁包..
    LawlietZ
    LawlietZ
    Jan 10, 2022❤️1
    89
    @abcbuzhiming 又不止是前端社区问题。。否则 log4j2 问题怎么出现的
    cloudzqy
    cloudzqy
    Jan 10, 2022
    90
    @LawlietZ log4j2 是代码写出了漏洞,所有软件都会有这个问题。但是 npm 这个,只要有一个作者犯病,全体跟着遭罪。
    Felldeadbird
    Felldeadbird
    Jan 10, 2022
    91
    npm 出问题不是一两天了。最灾难是接受维护老项目。很多东西不能乱动,真的贯彻了:“代码能跑就行”
    abcbuzhiming
    abcbuzhiming
    Jan 10, 2022
    92
    @LawlietZ log4j2 是软件出了 bug ,哪家软件没 bug 呢? bug 又不是作者故意写的。可是 npm 的几次事件都是人故意作恶,不管是黑客入侵篡改代码,还是像这一次这样作者恶意删除代码。npm 给人感觉是完全没审核,没人管。
    pkoukk
    pkoukk
    Jan 10, 2022
    93
    npm ci 可以锁包啊,但是一般没人用
    abcbuzhiming
    abcbuzhiming
    Jan 10, 2022
    94
    @LawlietZ 前端社区有没有问题我不知道,但是 NPM 肯定有问题,我没见过哪家的包管理工具像这样跟没人管一样。
    reiji
    reiji
    Jan 10, 2022
    95
    这事情一出估计会让人评估自己是否还真的需要搞个 bot 给自己的前端 repo 自动更新版本了,毕竟这个机制的前提建立在包更新都是给功能进行优化和增加安全性的信任上
    Mr54
    Mr54
    Jan 10, 2022
    96
    看来这作者是想让这事闹大出圈啊,看看那些白嫖了他库的大公司会做什么反应,上面看到的那个 ceo 说已经给他们用的库捐了钱了,希望作者能继续生活吧
    cheng6563
    cheng6563
    Jan 10, 2022
    97
    求原瓜
    LawlietZ
    LawlietZ
    Jan 10, 2022
    98
    @abcbuzhiming Java 对于个人维护的包,如果他下毒,升级后也是有这个问题的
    NeezerGu
    NeezerGu
    Jan 10, 2022
    99
    @vone delete this shit
    hahhahahahahah
    Dockerfile
    Dockerfile
    Jan 10, 2022
    100
    @LawlietZ maven 依赖一般都是锁版本的,不像 npm
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1532 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 218ms · UTC 17:49 · PVG 01:49 · LAX 09:49 · JFK 12:49
    ♥ Do have faith in what you're doing.