「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」
前言
- 心血来潮准备将自己的项目开源出去,上传github后发现被攻击了。原因是因为自己的配置文件也误操作上传到github了。别人就通过配置文件发现你的账号信息了。
- 针对已经上传了的文件,即使我们改过来了git提交历史里还是有我们的信息的。那么该如何操作呢?
BFG
- 点我下载
- 官网的介绍就是
repo-cleaner
,仓库清洁工。她的功能就是清楚我们的文件的提交历史。让钻漏洞的人无法追踪记录。
- 官网的介绍就是
使用说明
- 关于BFG的使用很简单的,我们只需要先将待去除的仓库拉取下来
git clone --mirror git-repo
- 关于mirror 大家可能了解比较少,她是对仓库的一次完整复制,但是并不是对源文件的100%展现。
移除大文件
java -jar bfg.jar --strip-blobs-bigger-than 100M xxxx.git
移除指定文件
java -jar bfg.jar --delete-files application.yml xxx.git
后续处理
- 我们能够看出来有个仓库的文件。
cd three-party.git
- 然后执行如下
git reflog expire --expire=now --all && git gc --prune=now --aggressive
- 最终
git push
案列
删除所有id_rsa ,id_dsa
$ bfg --delete-files id_{dsa,rsa} my-repo.git
移除所有大于50M文件
$ bfg --strip-blobs-bigger-than 50M my-repo.git
移除仓库中所有出现密码的地方
$ bfg --replace-text passwords.txt my-repo.git
从其他版本控制中迁移过来的时候会出现问题,移除git关键词
$ bfg --delete-folders .git --delete-files .git --no-blob-protection my-repo.git
总结
- 一定要注意在提交代码时将关键私密信息删除,如果不小心上传了就得用工具将替换掉,并且提交记录也要覆盖掉。我就是因为之前不小心上传上去后,数据库被别人轻易登陆成功删除我的所有数据。