为什么 npm 包不要求把包作者也写到依赖中去? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zjsxwc

为什么 npm 包不要求把包作者也写到依赖中去?

  •  
  •   zjsxwc
    zjsxwc 2023 年 1 月 7 日 via Android 2001 次点击
    这是一个创建于 1203 天前的主题,其中的信息可能已经有所发展或是发生改变。

    由帖子 新的前端 npm 包投毒事件 想到为什么同样是包管理的 php composer 、java maven 都会要求同时写包依赖的 包作者 与 包名,唯独 js npm 只需要写包名,不需要写上包作者,这样当前端有相似包名时就容易被“投毒”。

    npmae91bd0b0d04570b.jpg

    composer58d50f3aeb802727.jpg

    mvn023f3811d24e151a.jpg

    runze
        1
    runze  
       2023 年 1 月 7 日
    python 、rust 等也没有,所以应该是某种取舍问题
    Al0rid4l
        2
    Al0rid4l  
       2023 年 1 月 7 日
    问题在于, 包名可以相似那为什么包作者不可以呢? 这并不解决问题

    包作者仅仅是充当一个类似命名空间的角色, 从这点来说 npm 也有 scope 并且现在越来越多的库也都在使用 scope, 知名的库使用的比例会更多一些
    learningman
        3
    learningman  
       2023 年 1 月 8 日
    对应的应该是 scope ,就好像 java 的设计,包名里带域名,你传 mavenCentral 的时候要验证域名所有权的
    zjsxwc
        4
    zjsxwc  
    OP
       2023 年 1 月 8 日 via Android
    @runze
    所以有人说 python pip 包也会被投毒
    ```
    103hsfzxjy 2 天前 via Android
    @Jooooooooo pip 包也会被投毒,Hacker News 经常能看到
    zjsxwc
        5
    zjsxwc  
    OP
       2023 年 1 月 8 日 via Android
    flyqie
        6
    flyqie  
       2023 年 1 月 8 日 via Android
    @Al0rid4l #2

    包作者哪怕相似也可以避免很多问题啊。

    一般来说包的升级不会影响其所属作者,这样相对来说能够比较明确的区分该包是否由原作者发布。
    runze
        7
    runze  
       2023 年 1 月 8 日
    @zjsxwc 所以我说应该是某种取舍问题。

    就算 node 、python 当初考虑不周,rust 、deno 、dart 这些后来者总该吸取经验,但是它们还是做出了相同的选择,肯定有原因的。
    bjzhush
        8
    bjzhush  
       2023 年 1 月 8 日
    一个网络的名字,并不重要,投毒者一样可以起个假名。
    最重要的是没有机制能进行审核或者尽早发现类似投毒这种问题
    ragnaroks
        9
    ragnaroks  
       2023 年 1 月 8 日   1
    应该用公钥来代替作者的标识,当下载一个包的时候弹出公钥导入提示,需要用户明确允许才能继续下载。

    如果用户不能用公钥来识别是否预期作者,那这个用户本身不具备基础开发能力,活该被删文件。
    qbug
        10
    qbug  
       2023 年 1 月 8 日 via Android
    @ragnaroks 对,所以我一直梦想着有基于 ipfs 和 ipns 的包管理器♂反正是在 package 配置文件里也不需要特别担心长度和记不住的问题,而且像 rust 的包管理器在 vscode 里甚至可以在线搜索包,这种的话就更不担心了,先用人类可读语言或者是 ens 查找,找到了就敲定 ipfs 哈希,绝对保证构建一致性,要升级的时候用 ipns 找相同作者对其的更新版本,自动密码学验证,十分完美。而且这套系统还可以自动实现去重避免重复下载,旧的缓存也可以按需清理。
    qbug
        11
    qbug  
       2023 年 1 月 8 日 via Android
    @runze 这就是中心化包管理的问题,但是我就想不通为什么那些号称做去中心化包管理的语言和运行时没有吸收区块链的经验,ipfs swarm dat 这种带密码学保护的去中心化存储分发基础设施已经非常完善了。明明他们可以解决 go 和 deno 曾经体验极差的混乱包管理状态。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1482 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 57ms UTC 17:00 PVG 01:00 LAX 10:00 JFK 13:00
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86