问题假设/条件:
- 系统中存在具有电子邮件
foo@bar.com
(未验证)的用户。 - 访客未登录系统(没有当前会话,例如新浏览器)。
- 访客通过 OAuth(用户授权)使用 Google 帐户注册/登录。
- 系统会收到带有 uid 的回调和电子邮件
foo@bar.com
[已由 Google 验证]。
我在这里看到三个选项:
A. 使用电子邮件 foo@bar.com 将访问者登录到现有帐户。这有一些安全隐患。
B. 要求输入密码[假设系统中有密码,多个 OAuth 提供者可能不是这种情况] 并在有效的情况下将它们登录到现有帐户。
C. 拒绝登录/注册,说电子邮件已被使用,鼓励用户在连接谷歌之前登录。
选项#A 的安全风险是什么?
我自己想出的:
可以执行“预期攻击”,即攻击者预期注册并在目标之前在系统上创建帐户。在目标使用 OAuth 注册后,他将在该帐户上拥有一个活动会话。在执行#A 之前清除帐户上的所有会话会失败。