存在电子邮件时处理OAuth注册/登录

时间:2012-10-01 18:56:05

标签: security authentication oauth openid

问题假设/条件:

  1. 系统中存在电子邮件foo@bar.com(未经验证)的用户。
  2. 访问者未登录系统(没有当前会话,例如新浏览器)。
  3. 使用Google帐户访问者注册/登录,通过OAuth(用户授权)。
  4. 系统会收到回调,其中包含uid和电子邮件foo@bar.com [由Google验证]。
  5. 我在这里看到三个选项:

    一个。使用电子邮件foo@bar.com登录现有帐户的访问者。这有一些安全隐患。

    B中。要求输入密码[假设系统中有密码,多个OAuth提供商可能不是这种情况],如果密码有效,请将其签入现有帐户。

    ℃。拒绝登录/注册,说电子邮件已被使用,鼓励用户在连接Google之前登录。

    选项#A有哪些安全风险?

    我自己想出了什么:

    可以执行'预期攻击',攻击者可以预期注册并在目标之前在系统上创建帐户。在目标使用OAuth注册后,他将在该帐户上拥有一个活动会话。在做#A之前清除帐户上的所有会话都会被打败。

2 个答案:

答案 0 :(得分:0)

当用户通过Google中的OAuth登录时,您可以确定从Google收到的电子邮件地址确实属于该用户。因此,您似乎担心的是,您的系统上已知的该电子邮件地址的用户不拥有该电子邮件地址。这应该是他注册时通过电子邮件对话抓住的。但如果不是,您可能需要重置密码并向您这样做的真实用户发送电子邮件,以及出于什么原因。如果用户当前已登录,您可能还希望将用户注销。用户仍然可以访问他的数据,但只能通过他的OAuth登录会话或响应电子邮件。电子邮件应说明这是一项预防措施,因为无法确定它是否真的是同一个人。

答案 1 :(得分:0)

"意外袭击"也可能发生:

在第1步中,使用地址foo@bar.com注册的用户实际上打算键入fuu@bar.com,但输入了拼写错误:foo而不是fuu。< / p>

现在,Google用户使用Oauth和foo@bar.com注册,并以这种方式劫持了第1步用户的帐户。意外地:-)因为第1步用户犯了错字。

因此,步骤1用户可以预期攻击谷歌用户,或者谷歌用户可能会意外攻击步骤1用户。 (我现在至少不能想到任何其他攻击。)