我想用通过电子邮件发送给用户的临时代码替换密码。登录流程如下所示:
- 用户输入他们的电子邮件地址。“如果该电子邮件属于用户,将发送一个代码”消息以防止泄露有效电子邮件。
- 用户通过电子邮件收到一个字母数字代码(假设为 8 位数字,有效期为 1 小时)。
- 用户输入该代码作为他们的“密码”。
好的:
- 没有密码存储在数据库中。
- 无需密码重置。
- 大部分安全负担都转移到了电子邮件提供商身上。
坏处:
- 需要一个电子邮件地址。如果您无法访问它,您将无法访问您的帐户。
- 如果您忘记了您的电子邮件地址,您将无法访问您的帐户。
- 每次登录时检查您的电子邮件很不方便。这在移动设备上不是问题,在第一次登录后可以存储 API 令牌。
是否还有其他问题,尤其是与安全相关的问题?据我所知,这应该和密码重置一样安全。在这两种情况下,您都会收到电子邮件,允许您完全访问该帐户。
这里有类似的问题,但更多地关注 cookie,或者没有可靠的答案。我对积极和消极方面更感兴趣,尤其是任何安全问题。
清晰度/目标编辑: 目标是限制存储在数据库中的敏感数据的数量(即使该数据经过哈希处理),可供普通用户访问(通过互联网连接远程),并且不依赖于不同的设备进行身份验证. 此外,考虑到这些限制,请尽可能简单 (UX) 和安全。