有没有可能以别人的身份进行推送?

3

我对git和github还比较新手。而且我的英语不好,所以我需要用一种奇怪的方式来解释。

  1. 我们可以在github上看到任何人的用户名和电子邮件(如果不是私人的)
  2. 我们可以使用这些信息,例如“git config user.name”等。
  3. 然后,克隆属于他们的存储库
  4. 做任何你想做的事情并推送

这是可能的吗?我的git没有要求密码,或者github没有要求合并请求?

如果可能的话,我们该如何保护自己?


2
这不是答案,但是是的。有一篇dev.to的帖子展示了如何将Linus Torvalds添加到你的贡献者列表中(https://dev.to/martiliones/how-i-got-linus-torvalds-in-my-contributors-on-github-3k4g)。到目前为止的解决方案是[签署提交](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits)。 - Alexander L. Hayes
1
Git提交可以包含任意信息。甚至可以创建以其他人名义提交的提交。如果您想以这种方式提交某些内容,即表明“这实际上是我”,最好的方法是签署您的提交。https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work - Jeff Mercado
我们如何才能受到保护?即使以任何名称克隆了存储库,它仍将是您的存储库,而不是原始作者的。 - Lazy Badger
你可以使用虚假凭据将这些提交推送到你拥有的分支上,但是不行,如果没有被授予权限,你不能将它们推送到他们在GitHub上的仓库。作为一个外部人员,你必须提交一个Pull Request,然后他们会先审核一下。 - joanis
git config 控制着提交时所写的作者名字和电子邮件地址,而不是你在 GitHub 上的登录凭据或者推送权限。 - joanis
https://stackoverflow.com/search?q=%5Bgit%5D+fake+email - phd
1个回答

5

我认为你混淆了两个问题。

  1. 是否可以以别人的身份进行推送?

    不可以,你需要他们的GitHub凭证(PAT或ssh密钥)来进行操作。

  2. 是否可以创建使用别人名字作为作者的提交记录?

    可以,你可以在提交记录中设置任何作者的电子邮件和姓名,但这是 Git 配置允许您设置的全部内容——只能设置提交内容,而不能设置凭据。

    (*) 这只是一个部分的肯定回答:你无法像某个特定人一样签署提交记录,因此如果你创建了一条显示别人作为作者的提交记录,你将无法证明他们创建了该提交记录(除非你实际上拥有他们的 GPG 密钥,但与密码一样,这是不应该共享的机密)。

所以对于你最后的问题,你可以采取以下措施保护自己不被伪造:

  • 确保仅向你信任的人授予对你的仓库的推送访问权限,并确保你只接受经过审核的 pull 请求。如果你拥有仓库,你就拥有所有这些控制权。
  • 正如其他人所说,通过签署你的提交记录。一些组织要求所有提交记录都必须签署,例如,这是一种能够可验证地知道实际上谁创建了每个提交记录的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接