首页 > 解决方案 > Google 登录 API 不对称 - 泄露用户帐户

问题描述

我正在开发一个 SPA,它依赖于 Google 的登录 javascript 库来验证用户身份。一位用户提交了一份错误报告,称该应用在共享计算机上展示我们的产品时泄露了她的 Google 电子邮件帐户。

我注意到其他网站也有同样的症状,所以我的示例案例将使用 medium.com。

重现:

  1. 访问您当地图书馆的公共计算机。
  2. 打开铬
  3. 浏览到 mail.google.com 并查看没有用户登录。
  4. 访问 medium.com 并使用 Google 帐户登录。
  5. 退出 medium.com
  6. 这是登录和注销对称性结束的地方。此时您应该可以离开了。
  7. 再次访问 mail.google.com。看到您已自动登录。

似乎通过第 3 方网站进行身份验证也会登录 Google 的生态系统,然后在退出第 3 方网站后该帐户仍处于活动状态。

是否有一种通过不包含此副作用的 Google 帐户对用户进行身份验证的方法?

标签: javascriptgoogle-signin

解决方案


用户正在登录 Google 和网站

当用户使用 OAuth(通过 Google)时,它会将他们重定向到 Google 的 OAuth 页面,其中包含一些数据......

嘿 Google,这个叫 Foo Bar 的人自称是 foobar@gmail.com。那正确吗?

然后,如果您已登录,Google 将回复“是”或...

等一下,他们没有登录——我会给他们一个登录屏幕来检查你

然后用户将登录Google而不是您的网站。如果登录成功,Google 将使用相关信息(如姓名、出生日期、电子邮件等)将用户重定向回您的网站。

现在都完成了伙计!Foo Bar是 foobar@gmail.com!这是他的详细信息:[在此处插入用户信息]

用户现在已登录 Google您的应用程序。

当用户退出您的应用程序时,他们会保持登录到 Google,这会产生您正在谈论的结果。有一些方法可以自动退出 Google(在下面的链接中有详细说明),但我绝对不会推荐它们,因为用户可能会在另一个选项卡中打开 Gmail,你很可能会破坏他们的工作流程。你甚至可能会担心他们。(如果我无缘无故退出谷歌,我会的!)


资源


推荐阅读