随着 GitHub 的用户越来越多,许多的大型仓库正陆续往 GitHub 上迁移,作为程序员,难免会不慎将敏感信息提交到 GitHub 平台上,之前的华住酒店事件也提醒了我们 GitHub 仓库中登录凭证对于企业信息安全的重要性,作为一个重度依赖 GitHub 的“码农”,本文将提供一个检查并移除敏感信息的方式。
检查潜在的泄漏
首先我们需要检查出潜在的泄漏,只有定位到敏感信息的位置后我们才能加以修复。
简易操作,使用 Google 的域名搜索,例如:
但是,Git 作为一个版本控制系统,如此搜索能搜索到的最多也是最后一个 commit 中包含的信息,如果需要对一个个人或者组织的所有仓库的所有 commit 进行检查的话,可以使用一个成熟一些的工具,例如:Gitrob。
出于简单起见我们到 GitHub 下载 Gitrob 的可执行文件,地址为:https://github.com/michenriksen/gitrob/releases。
Gitrob 需要申请一个 "personal access token",在 GitHub 个人的 Settings 中选择 "Developer settings":
选择 "Personal access tokens" 并且生成:
将生成好的 token 放入自己的环境变量(比如 .bashrc)中:
如果不希望改变文件的话可以在执行前直接运行上述指令或通过加运行参数-github-access-token 启动,不过这样的话记得清理掉自己的指令历史。
开始执行分析,例如分析 LeetCode 的仓库:
此时会在本地监听一个 127.0.0.1:9393 的地址供用户访问,如果发现了类似登录凭证的信息的话,会直观地在页面上显示:
移除并删除敏感信息
当我们发现了历史 commit 中包含敏感信息后,第一步便是如何移除掉,由于 Git 是版本控制系统,直接删除文件重新 commit 就不要指望了,最简单的方法是使用一个工具——BFG。
对于不小心添加的文件,使用以下操作移除:
对于敏感的文件内容,使用:
如何防止发生信息泄漏事件
上文中给出了发现和移除的方法,但是这些仅仅是补救措施,我们在日常 Git 使用途中应该从哪些方面考虑来减少这类事件的发生呢?
- 在 add 阶段不要 git add . ,而是尝试使用 git add --interactive 来审核每一个文件
- 在 commit 前通过 git diff --cached 仔细检查文件
- 每个特性使用自己的 branch 并且持续往 master 分支合并,合并前需多人审核
作者:Nova
声明:本文版权归力扣 LeetCode 所有,未经允许禁止转载。