【发布时间】: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吗?如果您可以,那么我们将讨论安全问题。
-
没有。但我可以像你一样添加提交并推送到我拥有或有权推送的存储库。