gpt4 book ai didi

git - 如何验证从 git 存储库中删除了敏感数据?

转载 作者:太空狗 更新时间:2023-10-29 13:08:19 26 4
gpt4 key购买 nike

下面的资源描述了如何从 git 存储库中删除敏感数据。

然后,我如何仔细检查顽皮的部分是否真的消失了,,搜索存储库中的所有 blob(无论是引用的、垃圾的、打包的、松散的还是其他)以验证违规模式已被彻底摧毁?

与使用工作树相比,使用裸存储库时答案会改变吗?

最佳答案

根据该 GitHub 页面,任何提交都可以通过 SHA1 引用,即使没有引用指向它,因此您必须删除存储库并重新创建它。我可以验证提交在取消引用后至少两周仍然可见。一般来说,一旦你删除了敏感数据——这样它们就无法通过任何 ref 访问——修剪 Git 对象存储的最简单方法是克隆存储库并销毁旧的。如果您无法直接访问 GitHub 等存储库,则尤其如此。

(换句话说:如果垃圾 SHA1 已知,那么 GitHub 会很乐意通过网络提供它。Git 协议(protocol)通常会拒绝给你未命名的提交,但它可以通过 daemon.uploadarch 配置启用。)

将引用对象变成垃圾对象的方法是司法应用rebase , filter-branch , reflog , update-ref之类的。清除垃圾对象的方法是司法应用gc , fsck , prune , 和 repack .

示例查询:

  • 列出悬空提交,您可以通过 grep 查找可能被垃圾收集的敏感数据:

    git fsck --no-reflogs | awk '/dangling commit/{print $3}' | while read sha1;
    do git grep foo $sha1; done
  • 列出可从 ref 访问的每个对象(改为为 reflog 添加 --walk-reflogs):

    git rev-list --objects --all | while read sha path;
    do git show $sha | grep baz; done

另一种方法是使用 fast-export将整个存储库导出到一个基于文本的文件中,您可以选择并使用您想要的任何工具进行操作,然后 fast-import进入一个新的 repo 协议(protocol)。这很好,因为它不携带任何垃圾,而且您可以非常轻松地 grep 整个存档。

如果您没有工作树,答案不会改变,但命令如 filter-branch某些用例可能需要工作树。

关于git - 如何验证从 git 存储库中删除了敏感数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5302520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com