使用 Facebook/Google 进行身份验证是否被视为良好做法?

信息安全 验证
2021-09-02 12:47:25

许多服务、站点和应用程序都提供“使用 Facebook 登录”或“使用 Google 登录”选项。对于许多站点,浏览器会打开一个单独的窗口,您可以在其中输入您的用户名和密码。这样,您可以检查 URL 并说服自己来源确实是 Google/Facebook/whatever。在此窗口中登录应该是安全的,没有理由担心(除了您可能有的任何隐私问题)。

然而,这并非总是如此。虽然我现在找不到它们,但我很确定有些网站需要您在他们的网站上使用您的 Facebook/Google 帐户登录(因此显示的 URL 不是 Facebook/Google)。我确信有一些桌面应用程序也可以做到这一点。我可以举的一个例子是 Nvidia 的 GeForce 体验。除了必须在 Google 或 Facebook 上登录来更新驱动程序的荒谬之外,这似乎不是一个好的做法,因为我无法检查我是否真的在 Google 上登录或者登录窗口是否被欺骗。

在此处输入图像描述

我读过几次,使用其他服务登录被认为是好的做法。这是真的?我可以看到一些严重的问题。

4个回答

我很确定有些网站要求您在他们的网站上使用您的 facebook/google 帐户登录(因此显示的 URL 不是 facebook/google)。我确信有一些桌面应用程序也可以做到这一点。

这对网站来说是非常糟糕的做法,因为 OAuth / OpenID(它们是用于委托身份验证的协议)旨在解决该确切用例。但是在桌面应用程序中没有其他方法可以做到这一点,因为桌面应用程序没有重定向功能。

一个网页可以将您转发到 google 或 facebook 身份验证,您可以在其中输入您的凭据,然后当您成功进行身份验证时,Google / Facebook 可以将您重定向回您的来源。

这在桌面应用程序中是不可能的。解决它的一种方法是让桌面应用程序打开一个 Web 浏览器,您可以在其中向您的身份验证提供者(Google / Facebook)进行身份验证,然后在幕后发生的一些魔术可以让您对桌面应用程序进行身份验证。但总的来说,这是一个未解决的问题——您只需要相信桌面应用程序就不会窃取您的凭据。事实上,打开网络浏览器也不能真正解决问题。现在您只是相信浏览器不会窃取您的凭据(浏览器也是桌面应用程序!)

我读过几次,使用其他服务登录被认为是好的做法。这是真的?

这被认为是一种很好的做法,因为

  1. 它是用户友好的 - 用户不必记住一百个不同的凭据

  2. 总的来说,它提供了更好的安全性——你不必信任一百种不同的实现,并希望每个站点都没有错误并安全地存储你的密码——你只需要信任谷歌或 Facebook 就可以确保安全。并且他们比你的十几岁的侄子更有能力这样做,他为他的新网站编写了另一个登录系统。

当然,这也意味着您现在将所有鸡蛋放在一个篮子里。如果有人破坏了您的 Google/Facebook 帐户,那么如果您使用该帐户在其他一百个网站上进行身份验证,您将面临更大的麻烦。此外,让您的身份验证提供商知道您访问了哪些网站以及您登录的频率也存在隐私问题。

第一部分主要是针对桌面应用案例的部分解答。安装桌面应用程序与浏览远程站点不同。在后者中,您相信您的浏览器会(尽可能地)保护您免受可能的攻击。在前者中,您必须相信应用程序不包含恶意软件。我相信 chrome 不会将我所有的个人信息发送给 Google,与相信 NVidia 应用程序不会窃取您的 Google 密码之间没有什么区别。

唯一真正的区别是您在唯一的 Google 密码上添加了一个新的可能的攻击位置。如果您担心,只需创建一个辅助帐户,您不会将其用于敏感访问并将其用于 NVidia 和/或其他桌面应用程序。

话虽如此,对于网站甚至桌面应用程序来说,将自己置于道路上并随时承担将密码传递给外部身份验证服务的责任绝对是不好的做法OAuth 或 CAS 等协议专门设计用于允许站点或应用程序将身份验证委托给第三方服务,并且永远不会看到密码客户端信任身份验证。服务以保护其凭据,应用程序服务信任身份验证。服务以安全地识别客户。句号。必须相信应用程序服务不会窃取凭据,恕我直言,这是一个设计错误。

对于桌面用例,正确的方法是让您通过浏览器安全地下载更新-承担该部分的责任-然后应用程序获取下载的文件进行更新。这样,如果出现问题(例如,您从盗版网站下载了被入侵的文件),您将对此负责。但是一些应用程序。开发人员并不总是知道谁应该对什么负责……

在我看来,这不是一个好习惯。有些问题不容忽视:

  • 谷歌和 Facebook 已经在探索我们的隐私,将我们的个人信息出售给第三方公司和广告商。这对鱼来说只是更多的食物。这就是他们提供这项服务的原因。
  • 就像@Pascal 所说,所有鸡蛋都在同一个篮子里,信任第三方。现在不是一个很好的选择。
  • 您可以自己开发 Oauth 服务器,而无需使用 Facebook 或 Google。通过这种方式,您可以确定您的数据发生了什么。

我相信他们正是在这个视频中讨论了这一点。

把它们加起来:

“如果您可以选择不存储密码并且不处理它,而是让其他人(最好更大)为您执行此操作,请始终选择该选项。这将是一个少担心的潜在问题。”