Mat*_*ell 9 security yarnpkg yarnpkg-v2
本文建议在项目中添加配置.npmrc,将范围与私有注册表关联起来,以降低 npm 替换攻击的风险(有人可能会故意发布同名的恶意公共包)。
如何在 Yarn 2 项目中实现类似的效果?我尝试.yarnrc.yml在项目根目录中添加一个文件:
npmScopes:
someScope:
npmRegistryServer: https://npm.pkg.github.com
Run Code Online (Sandbox Code Playgroud)
~/.yarnrc.yml我们还为每个开发人员提供了一个具有类似配置的主目录,但还具有适当的npmAuthToken身份验证功能。
但是,当我执行 a 时yarn install,我收到Invalid authentication (as an anonymous user)该范围内的包的错误。据推测,特定于项目的.yarnrc.yml设置会覆盖每个用户的设置~/.yarnrc.yml,因此身份验证信息不再存在?
我所寻求的缓解措施是,如果开发人员忘记运行yarn npm login,那么它不会检查公共注册表中特定范围内的包。在 Yarn 2 中有办法做到这一点吗?
小智 1
我刚刚遇到了同样的问题。问题是您必须定义每个部分的身份验证(如本问题评论中指出的那样)。这也适用于npmRegistries.
npmScopes:
someScope:
npmRegistryServer: <your-registry-server>
npmAuthToken: <your-token>
npmAlwaysAuth: true
Run Code Online (Sandbox Code Playgroud)
请注意,层次定义中的重复配置.yarnrc.yml不会被合并,而是被替换(请参阅此评论)。因此,如果npmScopes已经在主目录中声明,它将被项目中的声明覆盖。