宣布 Hex Diff

· by Johanna Larsson

我非常興奮宣布新的網頁版 Hex 套件比對器:diff.hex.pm,由 Hex 團隊維護!這是在 hex.pm Github repo 上關於這議題的文章和討論的結果。

非常感謝 Hex 團隊(Eric Meadows-JönssonWojtek MachTodd Resudek)在將此想法轉變成實際服務時提供所有支援。

這項服務做了什麼?

簡單來說,你可以輸入任何 Hex 套件名稱和版本範圍,它會在你瀏覽器中產生一段標記過 git diff。不僅如此,你還可以分享 diff 連結,甚至標記特定行。 請花點時間試用看看!

為什麼我們需要它?

在各程式語言生態系中,套件相依性成為越來越常見的攻擊媒介。看看 npm 或 RubyGems,有許多 關於套件遭到劫持上傳惡意版本 的範例。如果你只是更新相依性,而沒有檢查它們的話,你無法確定自己在生產環境中放入的是什麼。而且你不能信任 Github 上的東西,攻擊者可以在將東西推送到 Github 之前上傳它到註冊表中。確保內容正確無誤的唯一方法是檢視註冊表中的實際內容。

所幸,Hex 團隊一直積極管理這項事務。在 hex 0.20.0 中加入了一個新的指令到混合中:mix hex.package diff package_name version_from..version_to。它的運作方式是將兩個選定的套件版本直接下載到你的硬碟,接著對它們執行 git diff,最後輸出結果。如果審查依賴關係更新所要做的,只要捲動由工具為你產生的差異,這樣你更有可能執行它。這比手動下載套件更為便利,但談到安全性時,輕鬆使用是重中之重。

那麼我們要如何讓它更好?放眼其他程式語言,有許多第三方服務提供基於網頁的差異,例如有針對 npm 的,和針對 RubyGems 的。受到 Maciej Mensfeld 製作的 Ruby differ 和 Wojtek Mach 的 mix 指令所啟發,我製作了一個 基於網頁的 Hex differ。我很興奮看到大家使用它,但我認為沒必要變成第三方服務。如果目的是建立一個值得信賴的套件變更來源,就需要由值得信賴的組織管理。所幸,Hex 團隊非常支持此理念!

當以安全的途徑輕易作業時,人們更有可能這麼做。此服務 diff.hex.pm 是提升 Elixir 安全性故事的另一項進展,它讓你能夠從任何瀏覽器產生差異,並透過連結分享。這也促使自動化:現在你可以運用程式產生這些連結,並將依賴關係審查納入你的工作流程。我們希望這會帶給社群許多關於不減緩你速度的安全性新點子。

接下來是什麼?

此專案為開源,授權在 Apache 2.0 下,就像 Elixir 本身。你可以在 Github 上的 hexpm 組織中找到它。請別猶豫分享你關於改進或新增功能的想法!