当我意识到我有可能以另一个用户的身份向存储库提交某些东西时(我在下面解释了一个场景以更好地理解),并且不认为它是安全漏洞,可以理解(见this )。
例如,假设我具有对称为AAA的某个存储库的推送访问权限,并且我的电子邮件地址为[email protected]
。我可以在系统上简单地编辑~/.gitconfig
并将电子邮件地址设置为其他人的电子邮件地址:[email protected]
。然后,我在本地存储库中进行了一些更改并将其提交(请记住,电子邮件地址为[email protected]
; git通过电子邮件地址跟踪提交)。现在,如果我尝试推送到远程存储库,它将要求输入用户名和密码。我放了我的,并且由于我可以推送访问AAA,所以它通过了。我已经代表[email protected]
的所有者成功推送了提交。
因此,基本上,我可以通过这种方式模拟人并代表他们添加提交。但再次,这不被视为漏洞(出于先前的原因链接)。
问题如果git不允许如此轻松地更改电子邮件地址,那会容易得多。为什么在~/.gitconfig
中每次更改电子邮件地址时,git都没有实现OAuth或类似的功能?
某些项目也不十分在乎谁编写了补丁,而是在乎补丁是否质量良好。作者和提交者的信息仅供参考,而不是身份检查,因此作者最终与项目无关。
[如果您担心身份欺骗,则要求提交签名非常容易。 GitHub提供此选项作为您可以使用的存储库的选项。但是,这要求其他人做出一些贡献,因为它要求人们正确设置GnuPG。
[如果您在GitHub之类的平台上进行操作,如果与PR关联的用户ID与与提交关联的用户ID不同,那么您也可以拒绝接受拉取请求,这是一种有效的方法;如果愿意,甚至可以通过CI来完成。