最佳化 GitHub 體驗的瀏覽器外掛「GitHub 熱點速覽」

削微寒發表於2024-07-30

上週,GitHub 有個“安全問題”——CFOR(Cross Fork Object Reference)衝上了熱搜,該問題的表現是:

遠端倉庫的提交內容任何人可以訪問,即使已被刪除。只需要拿到 commit ID+源/Fork 的專案地址,任何人都能訪問之前提交到遠端倉庫的內容。下面有 3 個演示,可以復現該問題:

演示一:Fork 專案已刪除,之前的提交所有人可見,復現步驟如下:

  1. Fork 任意公開的開源專案(源專案)
  2. 在 Fork 專案中提交 commit 並推送到遠端倉庫(push)
  3. 記下 commit ID 後刪除 Fork 專案
  4. 訪問源專案,並在位址列拼接上 commit ID,即可檢視之前的提交內容

演示二:源(上游)專案已被刪除,但透過 Fork 專案地址和 commit ID,仍可訪問源專案的提交內容。

演示三:源專案是私有專案,被 Fork(私有)後,源專案設定為公開,此時 Fork 專案中的私有內容可被任何人訪問。

對此,GitHub 官方很早之前就回應過,這些不是 bug,而是故意為之的特性。既然如此,我們應該如何規避這些安全隱患呢?限於篇幅,詳細討論將在正文中展開。

說回本周的開源熱搜專案,第一個開源專案是推薦給 GitHub 產品經理的 refined-github,這是一個來自“民間”的最佳化 GitHub 使用體驗的瀏覽器外掛。一體化的令牌管理平臺 Infisical,能夠有效地防止令牌和金鑰資訊洩漏。友好的聯邦學習框架 Flower,開箱即用對新手友好。

最後,極簡的 GPT-4o 客戶端和用 AI 智慧批次重新命名檔案的工具 ai-renamer,都是能幫你提升效率的 LLM 應用神器。

  • 本文目錄
    • 1. 開源新聞
      • 1.1 防範 CFOR 問題的建議
    • 2. 開源熱搜專案
      • 2.1 最佳化 GitHub 體驗的瀏覽器外掛:refined-github
      • 2.2 一體化的令牌管理平臺:Infisical
      • 2.3 Linux 核心模組程式設計指南:lkmpg
      • 2.4 友好的聯邦學習框架:Flower
      • 2.5 用 AI 批次重新命名檔案:ai-renamer
    • 3. HelloGitHub 熱評
      • 3.1 免費的視覺化 Web 頁面構建平臺:GrapesJS
      • 3.2 極簡的 GPT-4o 客戶端:gpt-computer-assistant
    • 4. 結尾

1. 開源新聞

1.1 防範 CFOR 問題的建議

爆出這個問題的文章,原標題是《Anyone can Access Deleted and Private Repository Data on GitHub》,我認為有些誇張,​因為必須滿足以下條件:

  1. 你需要推送改動到遠端倉庫
  2. 你必須知道特定的 commit ID
  3. 機密資訊本身就不應該推送到遠端倉庫

但刪除/私有內容能在公網訪問,這設計確實“反人類”。如果官方不改進,我們只能規範使用 GitHub 的流程來防止機密洩露,下面是我給出的建議:

  1. 不要在專案中放明文的金鑰和令牌等機密資訊,應該放在本地的環境變數中。
  2. 避免直接在 GitHub 網頁上進行敏感操作,因為會自動執行 push 操作。
  3. 在本地設定 git hook 自動進行洩密檢查,從源頭控制洩密風險。
  4. 在將私有專案開源之前,必須進行脫敏檢查。此外,即使開發私有的 Fork 專案,也應加上防止洩密的檢查流程。

最後,值得一提的是 git 懸空提交,它通常用於找回被誤刪和被 force 掉的提交。如果你曾經“有幸”用過:git fsck –lost-found 命令,當時的心情大概是劫後餘生,感謝這條神命令又救了你一命!

git push 命令不會推送懸空提交。

2. 開源熱搜專案

2.1 最佳化 GitHub 體驗的瀏覽器外掛:refined-github

主語言:TypeScriptStar:23.8k周增長:200

這是一個簡化 GitHub 介面並新增實用功能的開源瀏覽器外掛,它透過移除頁面的多餘元素讓介面和互動更加簡潔,新增了空白字元可見、一鍵合併修復衝突和放棄 PR 中某個檔案的所有修改等實用功能,最佳化了 GitHub 使用體驗,支援 Chrome 和 Firefox 瀏覽器。

GitHub 地址→github.com/refined-github/refined-github

2.2 一體化的令牌管理平臺:Infisical

主語言:TypeScriptStar:13.3k周增長:150

該專案可以幫助團隊集中管理應用配置和機密資訊,防止 API TOKEN、密碼和公鑰等資訊洩漏。它提供了簡單的介面、客戶端 SDK、命令列工具和 API 介面,方便集中管理並整合進現有的專案和 CI/CD 流程,同時還支援令牌掃描等功能,防止 git 提交時洩密。

GitHub 地址→github.com/Infisical/infisical

2.3 Linux 核心模組程式設計指南:lkmpg

主語言:OtherStar:7.3k周增長:170

這是一本關於如何為 Linux 核心編寫模組的指南,包含了針對最新的 5.x 和 6.x 核心版本的示例。Linux 核心模組是為 Linux 核心新增新功能的一種方法,無需修改核心本身和重啟系統,編寫此類程式需要具有 C 程式語言基礎。

GitHub 地址→github.com/sysprog21/lkmpg

2.4 友好的聯邦學習框架:Flower

主語言:PythonStar:4.6k周增長:200

聯邦學習是一種分散式的機器學習方法,可以在不共享資料的情況下訓練模型。該專案是一個簡單易用的聯邦學習框架,可與流行的機器學習框架(PyTorch、TensorFlow、JAX 和 scikit-learn 等)結合使用。它支援聯邦學習訓練、分析和評估,以及模擬客戶端執行等功能,包含豐富的示例,適用於需要保護隱私的機器學習模型開發場景,如醫療、政企和金融等。

import flwr as fl
import tensorflow as tf

# Load model and data (MobileNetV2, CIFAR-10)
model = tf.keras.applications.MobileNetV2((32, 32, 3), classes=10, weights=None)
model.compile("adam", "sparse_categorical_crossentropy", metrics=["accuracy"])
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()

# Define Flower client
class CifarClient(fl.client.NumPyClient):
  def get_parameters(self, config):
    return model.get_weights()

  def fit(self, parameters, config):
    model.set_weights(parameters)
    model.fit(x_train, y_train, epochs=1, batch_size=32)
    return model.get_weights(), len(x_train), {}

  def evaluate(self, parameters, config):
    model.set_weights(parameters)
    loss, accuracy = model.evaluate(x_test, y_test)
    return loss, len(x_test), {"accuracy": accuracy}

# Start Flower client
fl.client.start_numpy_client(server_address="127.0.0.1:8080", client=CifarClient())

GitHub 地址→github.com/adap/flower

2.5 用 AI 批次重新命名檔案:ai-renamer

主語言:JavaScriptStar:1.1周增長:200

這是一個 Node.js 寫的命令列工具,基於 LLM(Llava、Gemma、Llama 等)實現智慧、自動化、批次重新命名本地檔案。它使用簡單、無需人為干預,可根據檔案的內容智慧重新命名檔案,支援影片、圖片和檔案。

GitHub 地址→github.com/ozgrozer/ai-renamer

3. HelloGitHub 熱評

在這個章節,將會分享下本週 HelloGitHub 網站上的熱門開源專案,歡迎與我們分享你上手這些開源專案後的使用體驗。

3.1 免費的視覺化 Web 頁面構建平臺:GrapesJS

主語言:TypeScript

該專案透過直觀的視覺化介面,讓使用者能夠透過拖拽的方式,快速設計和構建網站的 HTML 模板。它所見即所得、移動端適配,適用於官網、新聞和 CMS 等型別的網站。

專案詳情→hellogithub.com/repository/572e31f5fc7541efb19c16d331796edf

3.2 極簡的 GPT-4o 客戶端:gpt-computer-assistant

主語言:Python

該專案是適用於 Windows、macOS 和 Ubuntu 的 GPT-4o 客戶端,它擁有極簡的使用者介面,支援執行多種任務,包括讀取螢幕、開啟應用、系統音訊和文字輸入等。

專案詳情→hellogithub.com/repository/4688db1465d5437aab851a70ba39f1e2

4. 結尾

以上就是本期「GitHub 熱點速覽」的全部內容,希望你能夠在這裡找到自己感興趣的開源專案,如果你有其他好玩、有趣的 GitHub 開源專案想要分享,歡迎來 HelloGitHub 與我們交流和討論。

往期回顧

  • 英偉達又向開源邁了一步
  • 將傳統應用帶入瀏覽器的開源先鋒

相關文章