仅OTP身份验证

时间:2019-12-06 23:00:34

标签: authentication passwords one-time-password

我正在考虑仅使用一次性密码构建一个网站用户身份验证系统:每次通常使用普通密码(例如,每次使用一次),用户都会在电子邮件中获得一个密码。用于注册,登录,冒险操作和帐户删除。

我看到的一些似乎并不严重的问题:

  • 无法更改密码以使所有现有会话无效-可以通过在服务器端存储会话并为用户使它们无效的方式来解决此问题
  • 任何人都可以检查系统中是否注册了特定电子邮件-对于通用网站而言,这似乎不是关键问题
  • 任何人都可以请求任何电子邮件的OTP-将使用每个远程连接的API限制和每小时1个未使用的OTP限制进行处理

我没有看到这种方法在野外提及或使用。它有什么主要缺点吗?非常感谢!

1 个答案:

答案 0 :(得分:4)

仅通过电子邮件发送OTP比仅使用密码更安全(这基本上就像是强迫用户每X个小时更改一次密码)。

我想同时解决您的一些非关键问题,并强调一些缺点。

非关键

使会话无效

您不必存储所有会话,仅存储无效的会话,也不必存储会话的最大持续时间。

检查用户(电子邮件)是否已注册

实际上 是一个问题-它告诉您电子邮件所有者使用了该网站,这是一个隐私问题,但是不大。

但是,这是一个攻击媒介。假设此电子邮件存在并且链接到真实的人,攻击者可以抓取您的用户列表,或只是在其他站点上攻击该用户。而且,他们可以代表他们发出过多的OTP请求,我将稍后解决。

所有这些,没有任何理由仅仅因为OTP会出现这个问题。用户可以请求OTP,并且您始终可以使用“如果注册了电子邮件地址hello@world.com,则向其发送了一次性密码”进行答复。这仅具有轻微的可用性含义。

任何人都可以要求对任何电子邮件进行OTP

如果攻击者可以使用针对hello@world.com的OTP请求来泛洪您的站点(来自不同的IP地址),则您可以阻止该用户(即,该用户已被DoS处理),否则您的站点将泛洪用户的邮箱,该邮箱可以使该邮件服务器将该站点标记为垃圾邮件发件人。

这也可以在带有密码重置电子邮件的普通站点中完成,但这就是为什么您通常希望用户列表是机密的。

更大的缺点

可用性

仅适用于OTP的登录假定您要登录的设备也已登录到链接到此站点的邮件帐户。否则,用户必须登录到邮件帐户才能登录到您的站点。

单因素身份验证

安全界正在推动多因素身份验证,其中密码通常是首要因素。最好的做法是至少允许2FA供选择的用户使用。

帐户锁定

如果由于某种原因(例如,他们使用工作或大学的电子邮件)而无法再访问用户的电子邮件帐户,则他们将无法登录,甚至无法将其电子邮件地址更改为新的电子邮件地址。

电子邮件活动

如果该站点使用率很高,那么它将一直不断地向各种公共电子邮件服务发送很多电子邮件。

仅此一项就可能导致该网站被标记为垃圾邮件发送者,甚至被标记为限速邮件。

如果确实受到速率限制,则某些用户将无法登录。