为什么 github/bitbucket 等默认情况下需要生成的密钥作为 "passwords" 来克隆私人仓库?而不是密码 + 2FA?
Why does github/bitbucket etc by default require generated keys as "passwords" for cloning private repos? Instead of password + 2FA?
基本上我最近不得不向一个非编码员客户(自由职业者)解释如何通过 sourctree GUI 为我正在处理的 Unity 项目下载私有 github 存储库。当时我没有意识到他需要为他的密码生成一个 OAuth 令牌,所以一开始它最终不起作用。
但回过头来看,为什么这是常态?我可以理解希望拥有具有不同权限的不同访问令牌,但这不应该是回购所有者或 github 用户的选择吗?简单的普通账户密码+2FA要求难道不能解决绝大多数安全问题吗?
为什么回购所有者帐户不需要为 clone/push 等生成任何访问令牌?
当Git对GitHub或Bitbucket进行认证操作时,通常使用Basic认证。换句话说,发送的值是某种类型的用户名和密码。因此,没有标准化的地方可以提供独立于密码字段的双因素身份验证令牌。
此外,如果用户正在克隆大量存储库(例如,作为公司入职的一部分),这些克隆操作中的每一个都会在不同的时间开始,因此需要不同的 2FA 代码。这意味着用户必须主动监控他们的进度并从他们的 phone 输入代码,使用他们的 YubiKey,使用 TouchID 或 Windows Hello,或其他一些 2FA 机制,这会很不方便。
使用安全生成的令牌或密码也是 Google 应用程序和其他服务的首选方法,这些应用程序和其他服务启用了 2FA,但除了密码验证之外没有其他好的选择。许多语言包站点也是如此,例如crates.io,它只提供随机标记。
我不能代表 Bitbucket,但 目前 GitHub 用户可以使用他们的密码通过 HTTPS 克隆,如果他们不这样做的话设置 2FA。但是,GitHub 正在取消该功能,因为如果密码泄露,攻击者可以仅使用该密码登录 Web 界面、更改密码、进行垃圾邮件和滥用以及一大堆其他活动。此外,许多不使用 2FA 的用户也不使用密码管理器,因此当他们的旧密码被泄露时,他们很可能会使用相似的密码,从而导致另一次泄露。令牌不允许更改用户的密码,并且它的范围是有限的,因此暴露的影响较小。
被盗用的帐户对用户和托管网站来说都是一个大问题。如果用户受到威胁,他们有权访问的任何内容都可能被下载,包括他们的私人代码或他们雇主的私人代码,从而造成巨大的经济损失。此外,不良行为者试图出售受感染帐户的能力,以在存储库上出售星级、骚扰用户、托管恶意软件以及一系列其他不良活动。这需要付出很多努力才能使网站不会成为垃圾邮件和滥用的垃圾场。此外,一旦这种 activity 发生,该帐户通常会被暂停或限制,这会给用户和潜在的雇主带来问题。
因此,理想情况下,这将由用户决定,但由于许多用户的密码使用习惯不当且安全性松懈,其总体后果对整个社区都不利,因此托管网站有必要采取行动并采用更强大的安全措施。
基本上我最近不得不向一个非编码员客户(自由职业者)解释如何通过 sourctree GUI 为我正在处理的 Unity 项目下载私有 github 存储库。当时我没有意识到他需要为他的密码生成一个 OAuth 令牌,所以一开始它最终不起作用。
但回过头来看,为什么这是常态?我可以理解希望拥有具有不同权限的不同访问令牌,但这不应该是回购所有者或 github 用户的选择吗?简单的普通账户密码+2FA要求难道不能解决绝大多数安全问题吗?
为什么回购所有者帐户不需要为 clone/push 等生成任何访问令牌?
当Git对GitHub或Bitbucket进行认证操作时,通常使用Basic认证。换句话说,发送的值是某种类型的用户名和密码。因此,没有标准化的地方可以提供独立于密码字段的双因素身份验证令牌。
此外,如果用户正在克隆大量存储库(例如,作为公司入职的一部分),这些克隆操作中的每一个都会在不同的时间开始,因此需要不同的 2FA 代码。这意味着用户必须主动监控他们的进度并从他们的 phone 输入代码,使用他们的 YubiKey,使用 TouchID 或 Windows Hello,或其他一些 2FA 机制,这会很不方便。
使用安全生成的令牌或密码也是 Google 应用程序和其他服务的首选方法,这些应用程序和其他服务启用了 2FA,但除了密码验证之外没有其他好的选择。许多语言包站点也是如此,例如crates.io,它只提供随机标记。
我不能代表 Bitbucket,但 目前 GitHub 用户可以使用他们的密码通过 HTTPS 克隆,如果他们不这样做的话设置 2FA。但是,GitHub 正在取消该功能,因为如果密码泄露,攻击者可以仅使用该密码登录 Web 界面、更改密码、进行垃圾邮件和滥用以及一大堆其他活动。此外,许多不使用 2FA 的用户也不使用密码管理器,因此当他们的旧密码被泄露时,他们很可能会使用相似的密码,从而导致另一次泄露。令牌不允许更改用户的密码,并且它的范围是有限的,因此暴露的影响较小。
被盗用的帐户对用户和托管网站来说都是一个大问题。如果用户受到威胁,他们有权访问的任何内容都可能被下载,包括他们的私人代码或他们雇主的私人代码,从而造成巨大的经济损失。此外,不良行为者试图出售受感染帐户的能力,以在存储库上出售星级、骚扰用户、托管恶意软件以及一系列其他不良活动。这需要付出很多努力才能使网站不会成为垃圾邮件和滥用的垃圾场。此外,一旦这种 activity 发生,该帐户通常会被暂停或限制,这会给用户和潜在的雇主带来问题。
因此,理想情况下,这将由用户决定,但由于许多用户的密码使用习惯不当且安全性松懈,其总体后果对整个社区都不利,因此托管网站有必要采取行动并采用更强大的安全措施。