【问题标题】:Is there a way to assure the integrity of a published npm packages, using hashes/checksums?有没有办法使用哈希/校验和来确保已发布的 npm 包的完整性?
【发布时间】:2019-12-31 05:16:12
【问题描述】:

我将代表我的组织发布一个 npm 包,比如说 A。我想为客户提供一种方法来验证他们正在使用的包实际上是由 A 发布的。实现此目的的一种方法是通过计算我们的来源的校验和,并将其发布在 A 的网站上的某个地方。任何想要验证的人都可以轻松完成。之前在 Maven 项目中工作过(在发布时会生成校验和),我期待校验和将在 npm 中自动计算。然而,事实并非如此。有没有办法做到这一点?在 npm 中验证包完整性的首选方法是什么?

PS:我看过这个帖子https://github.com/npm/npm/issues/6886,它谈到了类似的事情。

【问题讨论】:

    标签: javascript node.js security npm package


    【解决方案1】:

    老实说 - 不。 NPM 是分发服务,您需要信任它才能提供完整性检查。如果您信任它,并且正确设置了 https 根证书(也就是没有 mitm),那么您就可以信任它提供的文件。

    如果您的威胁模型是 NPM 受到威胁,或者您与 NPM 的连接受到威胁,那么您需要选择一种将 NPM 从等式中移除的带外机制。

    如果您的数据已经在 github 上,那么源上已经有一个完整性哈希。如果有人担心这一点,他们可以从 github 拉取提交 ID,它是您的源代码的 sha 哈希。即使 github 遭到入侵,也很难有人弄乱文件并使用新代码获得相同的哈希值。因此,将人们指向 github 和 sha 是一种解决方案。 npm install --save username/repo#commit-id

    最后,您对网站上的哈希的想法是可行的。假设用户 npm installs 你的包。然后提供运行命令来检查签名。但是现在您需要以他们可以重复的方式分享您是如何计算哈希的。请参阅此处了解如何实际计算 md5:https://unix.stackexchange.com/questions/35832/how-do-i-get-the-md5-sum-of-a-directorys-contents-as-one-sum

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 2010-10-17
      • 2020-06-27
      • 1970-01-01
      • 2020-12-27
      • 1970-01-01
      • 2010-10-02
      • 2020-12-08
      • 1970-01-01
      相关资源
      最近更新 更多