【问题标题】:git: Setting anyone's email address in .gitconfiggit:在 .gitconfig 中设置任何人的电子邮件地址
【发布时间】:2020-06-11 20:53:07
【问题描述】:

当我意识到我可以以另一个用户的身份将某些内容提交到存储库时,我正在玩 git(解释了下面的场景以便更好地理解)并且它不被视为安全漏洞,这是可以理解的(参见 @987654321 @)。

例如,假设我对某个名为 AAA 的存储库具有推送访问权限,并且我的电子邮件地址是 abc@xyz.com。我可以简单地在我的系统上编辑~/.gitconfig 并将电子邮件地址设置为其他人的电子邮件地址:def@pqr.com。然后,我在本地存储库中进行一些更改并提交它们(请记住,使用电子邮件地址def@pqr.com;git 通过电子邮件地址跟踪提交)。现在,如果我尝试推送到远程存储库,它会询问用户名和密码。我放了我的,因为我可以推送访问 AAA,所以它通过了。我已经代表def@pqr.com 的所有者成功推送了提交。

所以基本上,通过这种方式,我可以模拟人们并代表他们添加提交。但同样,这不被视为漏洞(之前附有原因的链接)。

问题
如果 git 不允许如此轻易地更改电子邮件地址,那会容易得多。为什么每次~/.gitconfig 更改电子邮件地址时,git 还没有实现 OAuth 或类似的东西?

【问题讨论】:

  • 这就是为什么在 important 项目中你要签署一些东西,否则人们可以这样做。
  • 关于您的问题:什么?我认为你需要围绕分布式工作的概念。您想针对 您自己的 repo 进行身份验证?你拥有它。你为什么要检查你是否真的是你?
  • @eftshift0,我的意思是我可以通过简单的修改将您的电子邮件地址添加到我的 ~/.gitconfig 文件中,然后继续代表您添加提交。 (然后推送到远程存储库,它会显示您已提交。)为什么我首先冒充某人并代表他们添加提交如此容易?
  • 好的...让我举个例子。你能push进入我拥有的一个repos吗?如果您可以,那么我们将讨论安全问题。
  • 没有。但我可以像你一样添加提交并推送到我拥有或有权推送的存储库。

标签: git security


【解决方案1】:

正如我explained on the list 所说,这是因为许多项目,例如 Linux 和 Git,都在补丁的基础上与维护者一起工作,维护者集成了来自不同人的补丁。因此,能够为任何作者推送数据很重要。如果您在补丁上欺骗了其他人的电子邮件地址,他们会通过收到他们未请求的评论 cmets 来通知他们。

有些项目也不太关心补丁是谁写的,而是关心补丁是否质量好。作者和提交者信息是用于归属,而不是身份检查,因此作者最终与项目无关。

如果您担心身份欺骗,要求提交签名非常容易。 GitHub 将此作为您可以使用的存储库的一个选项。但是,它给其他人贡献了一些负担,因为它需要人们正确设置 GnuPG。

如果您在 GitHub 等平台上操作,如果与 PR 关联的用户 ID 与与提交关联的用户 ID 不同,您也可以拒绝接受拉取请求,这是一种有效的方法;如果您愿意,这甚至可以通过 CI 完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2016-10-14
    • 2011-03-19
    • 2020-02-14
    • 1970-01-01
    • 2017-07-23
    • 2013-07-02
    相关资源
    最近更新 更多