Hex 代码差异比较工具发布

· 作者:Johanna Larsson

我非常兴奋地宣布 Hex 团队维护的全新基于 Web 的 Hex 包差异比较工具:diff.hex.pm!这是对 hex.pm Github 仓库 上的问题以及它引发的讨论的回应。

我非常感谢 Hex 团队,Eric Meadows-JönssonWojtek Mach 以及 Todd Resudek 为将这个想法转变为一个在线服务所提供的全部支持和帮助。

它能做什么?

简而言之,您输入任何 Hex 包名称和版本范围,它将在您的浏览器中为您生成一个带高亮显示的 git 差异比较结果。不仅如此,您还可以共享差异比较结果的链接,甚至高亮显示特定行。 请花点时间尝试一下!

我们为什么需要它?

在各种语言生态系统中,包依赖性正日益成为一种常见的攻击媒介。观察 npm 或 RubyGems,有很多 包被劫持的例子恶意版本被上传的例子。如果您只是更新依赖项而不进行检查,您实际上无法确定将什么内容放入生产环境。您也不能信任 Github 上的内容。攻击者可以在将代码推送到 Github 之前将其上传到注册表中。确保安全的方法是查看注册表中的实际内容。

幸运的是,Hex 团队一直积极应对这个问题。在 hex 0.20.0 中,mix 添加了一个新命令:mix hex.package diff package_name version_from..version_to。它的工作原理是将选定的两个包版本直接下载到您的硬盘,然后对它们运行 git diff,最后输出结果。如果审核依赖项更新所需做的只是滚动查看工具生成的差异比较结果,您更有可能进行操作。这比手动下载包更方便,但在安全方面,易用性至关重要。

那么,如何才能使其更出色呢?观察其他语言,有一些第三方服务提供基于 Web 的差异比较,例如,有一个服务用于 npm,还有一个服务用于 RubyGems。受 Maciej Mensfeld 制作的 Ruby 差异比较工具和 Wojtek Mach 制作的 mix 命令的启发,我制作了一个 用于 Hex 的基于 Web 的差异比较工具。我很高兴看到人们使用它,但我认为它不应该是一个第三方服务。如果目的是创建一个可靠的包更改来源,则需要由一个值得信赖的组织进行管理。幸运的是,Hex 团队非常支持这个想法!

当以安全的方式工作变得容易时,人们更有可能这样做。这项服务,diff.hex.pm,是提升 Elixir 安全性的又一步,它可以让您从任何浏览器生成差异比较结果并以链接形式共享。这也便于自动化:现在,您可以以编程方式生成这些链接,并将依赖项审核纳入您的工作流程。我们希望这能激发社区提出很多新的安全理念,这些理念不会拖慢您的工作。

下一步是什么?

该项目是开源的,使用与 Elixir 相同的 Apache 2.0 许可证。您可以在 hexpm 组织的 Github 仓库 中找到它。请随时分享您对改进或添加的意见!