上周,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 与我们交流和讨论。

往期回顾

优化 GitHub 体验的浏览器插件「GitHub 热点速览」的更多相关文章

  1. 穷人版生产力工具,好用得飞起 「GitHub 热点速览」

    被 GPT 和 OpenAI 刷屏了一个多月,现在 GitHub Trending 已经没有什么和 gpt 无关的项目了,但是好在总有优秀的开源项目拯救我的项目疲惫.像是贴心好用的反向代理 pgrok ...

  2. 你的梦想家居「GitHub 热点速览」

    上周推荐的 ChatGPT 版小爱,不知道有哪些小伙伴回去尝试接入了呢?本周依旧由 2 个不错的 ChatGPT 延伸项目,一个是比 DeepL.Grammarly 更懂你的划词翻译 openai-t ...

  3. 一款能“干掉” ChatGPT 的应用「GitHub 热点速览」

    据说有了它,ChatGPT 就可以靠边站了.因为 Auto-GPT 能更加主动地完成你给他的指定任务,不用做更多的人为干涉,它的推理能力比 ChatGPT 更强,有人用它解放双手做了个 React 网 ...

  4. 如何让程序更健壮「GitHub 热点速览」

    对于 ML 模型训练而言,好的数据集能让结果更健壮,cleanlab 是一个降低数据噪音,及时帮你修正数据集错误的工具.好的工具能让你的结果更完美.同样的,RedTeam-Tools 提高了渗透测试的 ...

  5. AI 能多强「GitHub 热点速览」

    不知道 AI 在你那边是什么样的具象,在我这就是各种搞图:从给线稿图上色,到直接给你生成一张小色图,AI 最近是真出风头,本周热点速览也收录了 2 个 AI 项目,也和图像有关.还有一个和 AI 相关 ...

  6. 开源不到 48 小时获 35k star 的推荐算法「GitHub 热点速览」

    本周的热点除了 GPT 各类衍生品之外,还多了一个被马斯克预告过.在愚人节开源出来的推特推荐算法,开源不到 2 天就有了 35k+ 的 star,有意思的是,除了推荐算法本身之外,阅读源码的工程师们甚 ...

  7. 碉堡!“万物皆可分”标记模型上线「GitHub 热点速览」

    这周有个让人眼前一亮的图像识别模型 segment-anything,它能精细地框出所有可见物体,它标记出的物体边界线清晰可见.如此出色的模型,自然获得了不少人的赞赏,开源没几天,就拿下了 18k+ ...

  8. 朋友圈那串神秘字符背后的开源项目「GitHub 热点速览」

    ​如果你这周没刷到类似 "npub1sg6plzptd64u62a878hep2kev88swjh3tw00gjsfl8f237..." 的一串字符,那就说明本期 GitHub T ...

  9. 真·生产力「GitHub 热点速览」

    这些工具真的能极大提高生产力,节约你的时间来自(摸)我(鱼)增(划)值(水).先别提 style2paints,你给它随意画个草图,就能给你一个能交付给甲方爸爸的成品插画.如果提升 30%-40% 传 ...

  10. Python 霸榜的一周,又有什么新 AI 力作呢?「GitHub 热点速览」

    GPT 带火了一波语言模型,LLaMA 和 Alpaca 也在持续发力.依旧是各类 GPT 后缀霸榜 GitHub trending 的一周,为此特推部分专门收录了两个比较不错的 GPT 应用.而作为 ...

随机推荐

  1. jquery checkbox的全选和反选

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  2. DP Record

    从 2024/5/4 往后开始记录捏. T1. 给你一棵树,定义一个集合的权值为 \(\dfrac{\sum_{x\in S}V_x}{\sum_{x\in S}C_x}\).若一个点 \(\in S ...

  3. mac os 10.15.1 懒人 .CDR

    链接:https://pan.baidu.com/s/1MHbUnHWQuGVE1P36mTjmkQ 提取码:ohlu

  4. 使用 OpenTelemetry 构建可观测性 02 - 埋点

    这是讲解 OpenTelemetry 系列博客的第二篇.在上一篇博客中,我们介绍了 OpenTelemetry 是什么以及由什么组成.现在我们将讨论如何使用 OTel 准确收集遥测数据和链路追踪数据. ...

  5. Big Exponential Addition

    Big Exponential Addition 给定一非负整数n计算2^n的值,一般而言把 2 乘上 n 次,就能得到答案.然而,当n特别大时,2^n要一次次地乘2可能稍嫌太慢,面对此一巨大问题利用 ...

  6. 如何使用csproj构建C#源代码组件NuGet包?

    一般我们构建传统的NuGet包,都是打包和分发dll程序集文件. 至于打包和分发C#源代码文件的做法,比较少见. 那么这种打包源代码文件的做法,有什么优点和缺点呢? 优点: 方便阅读源代码. 方便断点 ...

  7. 没有 Git,如何下载 Gitee 代码?

    目录 没有 Git,如何下载 Gitee 代码? 注册 Gitee 账号 下载代码压缩包 没有 Git,如何下载 Gitee 代码? 鉴于看我博客的人很多都是大学本科生.非 CS 专业,大部分人都不会 ...

  8. Abp vNext 模块化系统简单介绍

    怎么使用模块1. 建立模块直接的依赖关系,可以通过DependsOnAttribute特性来确定依赖关系2. 先配置模块,实现为模块填充数据和功能设置.3. 使用模块提供的功能接口 怎么定义模块1. ...

  9. CLR via C# 笔记 -- 字符、字符串、文本处理(14)

    1. 字符串一经创建,便不能以任何方式修改,只能修改引用. 2. ToLowerInvariant() 和 ToUpperInvariant() 以忽略语言文化的方式将字符串转换为小写或大写形式.性能 ...

  10. arm linux 移植 iperf3

    背景 新做的硬件需要有进行一些板级接口测试:关于网络的测试很多时候只是停留在 ping 通:能够使用就算了.不知道网络的丢包率,也不知道网络吞吐的性能. 因此,需要使用一些专业化的工具来进行测试:查阅 ...