首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用 npm 的缺陷,他获得了 130,000 美元的赏金

上图中标红色的部分,是 PayPal 内部使用的 npm 软件包,由公司内部使用和存储。看到这一点,Birsan 想知道,这些软件包是私有的,如果在公共 npm 存储库中存在同名的软件包会怎么样?...为了检验这个假设,Birsan 开始寻找一些私有内部软件包的名称,这可以在 GitHub 仓库或知名公司的 CDN 中的清单文件中找到,这些软件包在公共开放源代码仓库中是不存在的。...然后,Birsan 在开源存储库(例如 npm,PyPI 和 RubyGems)上使用相同的名称创建伪造项目。...结果发现,这些包管理工具会优先下载公共存储库上的软件包,如果不指定软件包的版本号,则优先下载高版本的软件包。...这样,Birsan 只需发布与公司内部名称相同的软件包,就可以成功地对 Microsoft,Apple,PayPal,Shopify,Netflix,Tesla,Yelp 和 Uber 进行攻击。

75120

深入学习 package.json 这个基础文件

repository(代码存储位置) 指定代码所在的位置。这对想要贡献的人很有帮助。如果 git repo 在 GitHub 上,那么该npm docs 命令将能够找到您。...对于 GitHub、GitHub gist、Bitbucket 或 GitLab 存储库,您可以使用与 相同的快捷语法npm install: { "repository": "npm/npm",...查看config和scripts了解更多关于包配置的信息。 peerDependencies(对等依赖) 在某些情况下,您希望表达您的包与主机工具或库的兼容性,而不必执行require此主机的操作。...如果您依赖 1.5.2 中引入的功能,请使用 "^1.5.2". peerDependenciesMeta(捆绑依赖) 这定义了在发布包时将捆绑的包名称数组。...请注意,包名称不包含任何版本,因为该信息在dependencies. 如果这是拼写"bundleDependencies",那么这也很荣幸。

1.2K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    全方位解读 package.json

    repository(代码存储位置) 指定代码所在的位置。这对想要贡献的人很有帮助。如果 git repo 在 GitHub 上,那么该npm docs 命令将能够找到您。...对于 GitHub、GitHub gist、Bitbucket 或 GitLab 存储库,您可以使用与 相同的快捷语法npm install: { "repository": "npm/npm",...查看config和scripts了解更多关于包配置的信息。 peerDependencies(对等依赖) 在某些情况下,您希望表达您的包与主机工具或库的兼容性,而不必执行require此主机的操作。...如果您依赖 1.5.2 中引入的功能,请使用 "^1.5.2". peerDependenciesMeta(捆绑依赖) 这定义了在发布包时将捆绑的包名称数组。...请注意,包名称不包含任何版本,因为该信息在dependencies. 如果这是拼写"bundleDependencies",那么这也很荣幸。

    1.5K21

    如何使用Nexus 3 :npm仓库配置

    如果您不愿支付每月7美元来托管您的包在官方npm私有仓库中,那么你会从本文中受益。...我建议您为每个要创建的新仓库创建一个新的Blob存储。这样,每个仓库的数据将位于/nexus-data目录内的不同文件夹中(在Docker容器内部)。但这不是必须的,默认仍然可以正常工作。...私有仓库 用于存储您的团队开发的npm包的仓库。...代理仓库 一个代理仓库,用于代理您从官方npm registry(可以添加多个,例如可以增加淘宝的镜像源)下载的所有内容。下次下载相同的依赖项时,它将被缓存在自己的Sonatype Nexus中。...publishConfig": {"registry": "http://your-host:8081/repository/npm-private/"}} 请注意,您可以将包发布到您的私有仓库,但在下载时

    2.1K20

    使用Nexus做java,nodejs的制品库和内网加速

    , 因为你的同伴正在依赖你的模块开发, 那么这个时候我们就可以发布Snapshot版本到这个仓库, 你的同伴就可以通过简单的命令来获取和使用这个临时版本. 3rd Party:顾名思义, 第三方库, 你可能会问不是有中央仓库来管理第三方库嘛...deploy(部署): 在集成或发布环境中完成,将最终软件包复制到远程存储库,以与其余开发人员和项目共享。...正式环境中不得使用snapshot版本的库。 比如说,今天你依赖某个snapshot版本的第三方库成功构建了自己的应用,明天再构建时可能就会失败,因为今晚第三方可能已经更新了它的snapshot库。...image.png NodeJS使用Nexus制品库 创建存储空间 image.png image.png image.png 创建仓库 仓库类型 hosted(私有仓库): 发布个人开发的...image.png 创建Group NPM Registries组合仓库 image.png 选择要包括的仓库,越靠上优先级越高,如果私有仓库在上,用户下载npm包的时候会优先下载私有仓库中的

    1.9K50

    前端包管理工具 npm yarn cnpm npx

    ,那么我们用npm管理管理这么多包,无论前端项目vue,react,还是后端项目express,koa,egg,都会一个配置文件,这个配置文件记录这项目的名称,版本号,项目描述,项目依赖库和依赖库的版本号...private 属性 记录当前项目是否时私有的 当只为true时,npm 不能发布它main 属性 设置程序的入口 当前包的入口文件 注意区别webpack入口文件的概念,不是一个东西。...; 从registry仓库中下载压缩包(如果我们设置了镜像,那么会从镜像服务器下载压缩包); 获取到压缩包后会对压缩包进行缓存(从npm5开始有的) 将压缩包解压到项目的node_modules文件夹中...如果我在终端执行 webpack --version使用的是哪一个命令呢?...原因非常简单,在当前目录下找不到webpack时,就会去全局找,并且执行命令; 那么我想使用 局部的webpack版本,该怎么办呢 解决方案 方式一:在终端中使用如下命令(在项目根目录下) .

    88320

    你真的了解package.json吗?

    如果使用和 npmjs已经存在的名称发布包,将收到错误。 如果不将包发布到npmjs,那么项目的name字段就没有那么多要求。...如果我们的软件包(假设其名称为 front789)由用户安装,那么当用户执行 require('front789') 时,则将返回主模块的导出对象。...使用 npm cli 安装软件包时(npm install xxx@1.0.1),会将其下载到我们的 node_modules/ 文件夹中,并将添加到我们的依赖项属性中,并注明软件包的名称(xxx)和安装的版本...package-lock.json 文件还包括每个软件包内容的加密哈希,这确保安装的软件包未被篡改,并且与软件包作者发布的确切相同的软件包。...当我们运行 npm install 时,npm 使用 package-lock.json 中的信息确定要安装的软件包的确切版本,并以与原始安装相同的顺序和相同的依赖项安装它们。

    12310

    你真的了解package.json吗?

    如果使用和 npmjs已经存在的名称发布包,将收到错误。 如果不将包发布到npmjs,那么项目的name字段就没有那么多要求。...如果我们的软件包(假设其名称为 front789)由用户安装,那么当用户执行 require('front789') 时,则将返回主模块的导出对象。...使用 npm cli 安装软件包时(npm install xxx@1.0.1),会将其下载到我们的 node_modules/ 文件夹中,并将添加到我们的依赖项属性中,并注明软件包的名称(xxx)和安装的版本...❞ package-lock.json 文件还包括每个软件包内容的加密哈希,这确保安装的软件包未被篡改,并且与软件包作者发布的确切相同的软件包。...当我们运行 npm install 时,npm 使用 package-lock.json 中的信息确定要安装的软件包的确切版本,并以与原始安装相同的顺序和相同的依赖项安装它们。

    24810

    Nexus3.x安装及配置

    (100M光纤),在服务器上使用wget同样很慢,最后安装了迅雷使用迅雷下载后速度快很多,看来下载确实需要专业的下载工具,下载完成后上传到服务器上即可,当然也可以直接在服务器上使用wget下载,如果不嫌弃下载的慢的话...8081 -j ACCEPT #启动 ps 我安装时第一次启动使用....x默认Releases,Snapshots,Central,可在web页面配置 在web界面点开 Hosted:私有仓库,专门用来存储我们自己生成的jar文件 3rd party:未发布到公网的第三方...,我这里直接使用了admin用户,在nenus2.x中还内置了一个deployment/deployment123用户,在3.x该用户被移除了,这里可以自己配置角色和用户,我就直接使用admin用户了...仓库且不会上传到快照仓库 Release仓库默认不支持重复发布,可配置 注意setting中server标签下的id要和pom文件中仓库配置的id相同,即指定上传到哪个仓库 第三方jar包上传 对于第三方

    1.8K20

    一篇适合躺收藏夹的 Nexus3 搭建 NuGet&Docker 私有库的安装使用总结

    前言 Nexus 是支持 Nuget、Docker、Npm 等多种包的仓库管理器,可用做私有包的存储分发,缓存官方包。...拉取包的地址一般配置此仓库地址 nuget-hosted:托管存储库,本地发布的包可以存储到此存储库。...在设置了禁用重新部署时,推送重复包的时候将会返回 400 错误 使用 Nexus 的 NuGet 包源 因为前面配置关闭了匿名访问以及配置了相应的账号,所以为了方便的从 Nexus 服务中拉取 Nuget...拉取包的地址配置此仓库地址(企业版才支持推送,开源版可以推送到 hosted 库) docker-hosted:托管存储库,本地发布的包可以存储到此存储库。...是否正确,以及设置 NuGet API 密钥领域 启用 NuGet API-Key Realm 禁用重新部署时,但是推送了相同的包时,会返回 400 Linux 上安装证书,看到很多资料都是执行

    4.8K40

    Nexus3.x安装及配置

    (100M光纤),在服务器上使用wget同样很慢,最后安装了迅雷使用迅雷下载后速度快很多,看来下载确实需要专业的下载工具,下载完成后上传到服务器上即可,当然也可以直接在服务器上使用wget下载,如果不嫌弃下载的慢的话...8081 -j ACCEPT #启动 ps 我安装时第一次启动使用....,Central,可在web页面配置 在web界面点开 Hosted:私有仓库,专门用来存储我们自己生成的jar文件 3rd party:未发布到公网的第三方jar (3.x去除了)...-- 私有库地址--> nexus http://192.168.16.30:8081/...仓库且不会上传到快照仓库 Release仓库默认不支持重复发布,可配置 注意setting中server标签下的id要和pom文件中仓库配置的id相同,即指定上传到哪个仓库

    6.8K71

    Maven就是这么简单

    java类库 Settings.xml 中默认的用户库: ${user.home}/.m2/repository[通过maven下载的jar包都会存储到指定的个人仓库中] Maven默认仓库下载地址在...当我们需要jar包的时候,Maven第一时间也是去本地仓库中寻找jar包 中心仓库: ** 当Maven在本地仓库和私服找不到我们需要的jar包的时候,就去中心仓库中帮我们下载对应的jar包**。...如果私有服务器拥有这些jar包,那么每台电脑就不用去中心仓库中下载了… maven软件构建的生命周期 软件的生命周期就是以下 -** 清除--> 编译-->测试-->报告-->打包(jar\war)--...:你得留意你用的是哪个Maven,是你自己下载的Maven还是使用Idea集成的Maven,如果没有配置的话,那么就会出现401错误。...Settings.xml 配置了我们的本地仓库位置。 过度去中心仓库去加载jar包的话,会非常影响性能的。我们搭建一个私有仓库的话,如果私有仓库有对应的jar包,就可以直接在私有仓库中找了。

    1.3K50

    前端工程化 - 剖析npm的包管理机制(完整版)

    npm包命名规则 name 即模块名称,其命名时需要遵循官方的一些规范和建议: 包名会成为模块url、命令行中的一个参数或者一个文件夹名称,任何非url安全的字符在包名中都不能使用,可以使用 validate-npm-package-name...如果你的包名与现有的包名太相近导致你不能发布这个包,那么推荐将这个包发布到你的作用域下。 例如:用户名 conard,那么作用域为 @conard,发布的包可以是@conard/react。...man 文件必须以数字结尾,或者如果被压缩了,以 .gz 结尾。数字表示文件将被安装到 man 的哪个部分。如果 man 文件名称不是以模块名称开头的,安装的时候会给加上模块名称前缀。...dependencies:结构和外层的 dependencies 结构相同,存储安装在子依赖 node_modules 中的依赖包。...如果没有冲突,直接跳过获取包信息、构建依赖树过程,开始在缓存中查找包信息,后续过程相同 ?

    3K93

    制品库实践: Jenkins&Nexus&Artifactory集成

    本章我们主要讲述Jenkins与制品库nexus、artifactory集成,上传下载制品。 ?...:/nexus-data \ sonatype/nexus3:3.20.1 安装完成后默认的admin账号密码存储在了数据目录,获取初始化密码后更新账号密码。...可以通过组装并添加自己的业务相关组件来创建功能强大的完整应用程序。在不同的工具链中,组件称为工件,程序包,捆绑包,归档和其他术语。概念和想法保持不变,组件用作通用术语。组件由一组特定值(坐标)标识。...实际的存档文件(pom.xml)是与组件( jar/war包)关联的资产。但是,更复杂的格式具有与组件(jar包)关联的众多资产(pom)。...例如,Maven存储库中的典型JAR组件至少由POM和JAR文件定义-两者均构成属于同一组件的单独资产。其他文件(例如JavaDoc或Sources JAR文件)是属于同一组件的资产。

    5K20

    带你深入了解NPM——NPM初学者指南

    在该缓存中,存储HTTP请求信息和额外包数据。...ci:几乎与npm install用于自动化环境(例如持续集成过程)相同。此命令比此命令更严格,install并确保安装始终是干净的(如果存在,它会自动删除node_modules文件夹)。...例如,默认情况下,最新标记用于所有库的最后一个版本,您只需运行npm install library-name@latest,NPM将了解要下载的库的哪个版本。...另外,请记住,包的名称将由您的package.json文件中的name属性给出,而不是来自文件夹的名称(通常二者都是相同的,但并这不意味着他俩有什么关系)。...因此,如果您遇到重复的名称错误(考虑到NPM中已经有重名的包了),那么您就必须进行更改一个再次发布了。 结论 感谢阅读,我希望到现在为止,你已经了解了NPM的复杂性和美感。

    1.8K20

    package.json 详解

    `name` "name": "my-project" name 字段定义包的名称。发布到 NPM 注册表时,这是软件包将在其中显示的名称。...如果将软件包发布到 NPM,则 name 属性是必需的,并且必须是唯一的。如果尝试用 NPM 注册表上当前已经使用的名称发布程序包,则会收到错误消息。...如果你不想提供许可证,或者明确不想授予使用私有或未发布的软件包的权限,则可以将 UNLICENSED 作为许可证。...NPM 注册表会为该字段建立索引,能够在有人搜索软件包时帮助找到它们。数组中的每个值都是与你的程序包关联的一个关键字。 如果你不发布到 NPM 注册表,则这个字段用处不大,可以忽略它。...使用 npm CLI 安装软件包时,它将下载到你的 node_modules/ 文件夹中,并将一个条目添加到你的依赖项属性中,注意软件包的名称和已安装的版本。

    2.3K20

    NPM基本介绍(一)

    包:包是在模块基础上更深一步的抽象,Node.js的包类似于C/C++的函数库或者java的类库,它讲某个独立的功能封装起来,用于发布、更新、依赖管理的版本控制。...这种称之为全局模式 main: 模块引入方法require()在引入包时,会优先检查这个字段,并将其作为包中其余模块入口。...npm v3会尽量把逻辑上某个层级的模块在物理结构上全部放在项目的第一层级,具体摘抄为以下: 在安装某个二级模块的同时,如果发现第一层级层级还没有相同名称的模块,便把这第二层的模块放在第一层级(参考上满模块路径生成规则...在安装某个二级模块的时,若发现第一层级有相同的名称,相同的版本,便直接复用那个模块 ? 在安装某个二级模块时,若发现第一层级有相同名称,但是版本却不相同的模块,便只能嵌套在自身的父模块下方 ?...但是有时候也避免不了) 当被不同的依赖关系需要时,代码包会被复制粘贴多次,比较占存储空间 扁平化依赖树的算法相当复杂 不能保证同一份package.json在不同机器上安装着相同的依赖,可能间接导致错误

    1.6K20

    Android工程化实践:组件化发布

    构建时搜索依赖的顺序如下: 在本地仓库搜索,如果搜索不到,执行步骤 2; 在中央仓库和私有仓库中搜索,搜索顺序按照repositories中声明的顺序依次查找。...,与常规版本最大的不同是:快照版本每次构建时都会在远程仓库中检查最新的快照。...' } 使用 nexus 搭建私有仓库 发布组件到本地仓库只能单机使用,在实际工作中,我们往往需要将组件发布给其他团队成员使用。...按照以下步骤搭建环境: 下载 Nexus 安装包: 启动 Nexus 服务进程:进入安装路径/nexus-3.30.1-01/bin,在终端运行命令: ./nexus start ....发布到 Github 仓库 如果你需要将开源,那么就需要发布到公共仓库,这一节介绍发布到 Github 的步骤: 依赖 Github Maven 插件:在项目级 build.gradle 中添加插件依赖

    2.5K20

    【Maven】008-Maven 私服搭建与使用

    它允许团队在本地搭建一个中央存储库,用于保存和分享项目构建所需的依赖项。一些常见的Maven私服产品包括 Nexus、Artifactory 和 Apache Archiva 。...2、建立私服后依赖查找和下载逻辑 第一步:请求本地仓库 当用户需要某个构件时,首先会检查本地仓库是否已经存在所需构件。 如果本地仓库中已经有所需构件,系统将直接从本地仓库获取,无需进行远程请求。...如果外部远程仓库存在所需构件,Maven 私服会将该构件下载并缓存到自身的仓库中,然后将构件返回给用户。 如果外部远程仓库中也不存在所需构件,Maven 将报错,指示找不到所需的依赖项。...参考图 3、Maven 私服的优势 加速构建过程: Maven 私服允许团队在本地搭建一个中央存储库,使得构建时可以优先从局域网内的私服获取依赖项,从而减少对外部远程仓库的依赖,加速构建过程。...存放:通过 Nexus 获取的第三方 jar 包 hosted 存放:本团队其他开发人员部署到 Nexus 的 jar 包 3、仓库名称&说明 仓库名称 说明 maven-central Nexus

    7300

    Nodejs课堂笔记-第二课 package.json的作用   Version:  Description:  author   contributors   bin   script   m

    但在最下面的package.json文件引起了我的注意。从名称上面来看应该是一个存储元数据的文件,到底是不是呢?...Name:   这个npm包的名称,使用时只需要注意名称为小写,同时保持唯一性。如果你决定将此包发布到npm官方仓库,那么此名称就是此包在仓库中的唯一标示。   Version:   这个包的版本号。...在上面的例子中,如果想要执行这个包的test脚本,那么当输入npm test时,就会调用到test所对应的命令了。   main   包的入口函数。...preferGlobal   只会在CLI中用到此属性,是用来标记此包是否支持全局安装的。   private   如果设为true了。那么此包就不会被发布到npm仓库中。   ...publishConfig   标记发布地址。这个地址不一定是npm官方仓库,也可以是team的私有仓库。只要能保存此包就可以。性质嘛,不重要。   license   许可证。

    1.1K70
    领券