为了确保从公共 npm 注册表或任何支持签名的注册表下载的包的完整性,您可以使用 npm CLI 验证下载包的注册表签名。

先决条件

  1. 安装 npm CLI 版本 v8.15.0 或更高版本
  2. 使用 npm installnpm ci 安装依赖项

验证注册表签名

可以使用以下 audit 命令验证注册表签名

npm audit signatures

如果所有已安装版本都具有有效的注册表签名,则 CLI 将显示此示例响应

audited 1640 packages in 2s
1640 have verified registry signatures

故障排除

某些包缺少注册表签名

如果包没有签名 *并且* 包注册表支持签名,则 CLI 将报错。这可能意味着攻击者可能试图绕过签名验证。您可以通过从 registry-host.tld/-/npm/v1/keys 请求公共签名密钥来检查注册表是否支持签名。

如果某些版本缺少注册表签名,则 CLI 将显示此示例响应

audited 1640 packages in 2s
1405 packages have verified registry signatures
235 packages have missing registry signatures but the registry is providing signing keys:
[email protected] (https://registry.npmjs.org/)
...