共享公共仓库的 .git 文件夹是否安全?

信息安全 隐私 混帐 信息公开
2021-09-07 00:57:01

假设我克隆了一个 repo,然后可能会对其进行一些处理。然后我恢复/推送了所有更改,所以我的朋友拥有所有 repo 文件。我将 .git 文件夹发送给他是否安全?那里是否有任何私人信息,例如我的用户名、我的电子邮件、命令历史记录,或者可能是一些秘密?

3个回答

您的 .git 存储库的内容可能包含您可能不想共享的松散对象(例如,您提交但改变主意并删除/修改的内容),因此没有明确的“是的,这是安全的”。

离线共享 git 存储库的更好方法是创建一个捆绑文件并将其发送给您的朋友,例如:

git bundle create /tmp/myrepo.bundle --all

然后您可以将 myrepo.bundle 发送给您的朋友,他们可以像从任何遥控器一样从中克隆:

git clone myrepo.bundle 

这将是确保您不共享不打算被其他人看到的松散对象的更好方法。

我把.git文件夹发给他安全吗?

您需要注意的一个地方是共享您的整个 .git文件夹将包括.git/config. 根据您所做的工作,这可能包含很少的信息,也可能包含很多信息。如果您所做的只是一个克隆,那么您的遥控器列表将不会更多。但是,如果您在存储库中进行了广泛的工作,则可能会有别名或配置设置之类的内容,以及您推送的分支的部分记录(更具体地说,您配置了哪些跟踪分支)。更糟糕的是,如果您设置了存储在 local 中的任何访问凭据(例如,用于代码审查或 CI),这些凭据.git/config将被泄露。

除此之外,请参阅其他答案。

尽管如此,我不相信你.git/config无论如何都需要发送但是,发送捆绑包会更安全,也更可靠,所以简短的回答是,您.git无论如何都不应该发送您的文件夹。不仅是为了安全/隐私,也是为了便于使用

那里是否有任何私人信息,例如我的用户名

如果您尚未配置 git 标识,则您的本地计算机用户名应仅存在于存储库中。在这种情况下,git 默认为类似$(id)@$(hostname),如果您提交任何内容,它将被记录下来。如果您提交某些内容,意识到您需要设置您的标识并修改提交,这可能特别相关,因为旧的提交可能仍然存在,直到它被垃圾收集。

我的电子邮件

您的电子邮件是 git commit 的作者记录的一部分。如果您已推送到公共存储库,那已经存在。请注意,即使您更改作者,提交者也是单独的记录。另见上一段。

命令历史,或者一些秘密?

如果您的 .com 中有任何秘密.git/config,这些可能会被泄露。

您的命令历史不会直接泄露。但是,可以通过仔细分析文件夹的内容来推断您的命令历史记录,至少就(某些)git命令而言。.git请注意,这部分适用于公共存储库,尽管在那里发现除了提交和合并之外的任何内容要困难得多,甚至不可能。不同之处主要在于您的.git文件夹将包含来自已修改提交、变基、废弃分支等的工件。

实际上,除了您的 .local 文件夹之外,作为公共存储库的克隆的本地文件夹很少包含您可能真正认为“敏感”的任何内容,除非您不小心提交了绝对敏感的内容但是,在大多数情况下,如果您不介意某人看到“官方”历史,您可能不会介意他们是否可以看到该历史是在哪里/如何创建/编辑的,除非您有近乎病态的需要保持整洁的外观。.git/config.git

...但同样,只需使用捆绑包。您付出的微小的额外努力——如果有的话;您仍然必须以某种方式.git打包文件夹内容- 被您的收件人使用捆绑包的容易程度所抵消,最重要的是您不必担心泄露敏感信息。

这取决于你在做什么。例如,您之后删除的文件可能包含一些敏感数据。

你不是第一个提出这样问题的人。查看 Git 文档,从存储库中删除敏感数据一章。它描述了您应该注意什么、可以使用哪些工具以及可以使用哪些特定命令来删除可能的敏感数据。