仅 OTP 身份验证
OTP-only authentication
我正在考虑构建一个仅使用一次性密码的网站用户身份验证系统:每次正常使用普通密码时,用户都会在电子邮件中收到一个密码,例如用于注册、登录、冒险操作和帐户删除。
我看到的一些似乎并不重要的问题:
- 无法更改密码以使所有现有会话失效 - 可以通过在服务器端存储会话并有办法为用户使它们失效来解决
- 任何人都可以检查某个电子邮件是否已在系统中注册 - 对于通用网站来说似乎不是关键问题
- 任何人都可以为任何电子邮件请求 OTP - 将使用每个远程连接的 API 限制和每小时 1 个未使用的 OTP 的限制来处理
虽然我没有看到这种方法被提及或在野外使用。它有什么主要缺点吗?非常感谢!
仅通过电子邮件发送 OTP 比仅通过密码更安全(这基本上就像强迫用户每 X 小时更改一次密码)。
我想解决您的一些非关键点,并强调一些缺点。
非关键
使会话无效
您不必存储所有会话,只需存储无效的会话,并且只存储会话的最长持续时间。
检查用户(电子邮件)是否已注册
这实际上 是 一个问题 - 它告诉您电子邮件所有者使用该网站,这是一个隐私问题,但是很小。
而且,它还是一个攻击媒介。攻击者可以抓取您的用户列表,或者只是去攻击其他站点上的该用户,假设这封电子邮件存在并且链接到真人。此外,他们可以代表他们发出过多的 OTP 请求,我稍后会解决这个问题。
综上所述,没有理由仅仅因为 OTP 就会出现此问题。用户可以请求 OTP,您可以随时回复 "If the email address hello@world.com is registered, a one-time password has been sent to it"。这仅对可用性有轻微影响。
任何人都可以为任何电子邮件请求 OTP
如果攻击者可以通过 hello@world.com 的 OTP 请求淹没您的站点(来自不同的 IP 地址),您要么阻止该用户(即该用户已被 DoS'ed),要么您该站点将淹没用户的邮箱,这可以使该邮件服务器将该站点标记为垃圾邮件发送者。
这也可以在使用密码重置电子邮件的普通站点中完成,但这就是为什么您通常希望您的用户列表是保密的。
更大的缺点
可用性
仅 OTP 登录假定您登录的设备也登录到链接到该站点的邮件帐户。否则,用户必须登录邮件帐户才能登录您的站点。
单因素身份验证
安全社区正在推动多因素身份验证,其中密码通常是第一因素。一个好的做法是至少允许选择 2FA 的用户。
帐户锁定
如果用户的电子邮件帐户出于某种原因无法再访问(例如,他们使用了他们的工作或大学电子邮件),他们将无法登录,甚至无法将他们的电子邮件地址更改为新地址。
电子邮件activity
如果该站点被大量使用,那么它会一直不断地向各种 public 电子邮件服务发送 大量 电子邮件。
仅此一项就可能导致站点被标记为垃圾邮件发送者,甚至被限制速率。
如果它确实受到速率限制,一些用户将无法登录。
我正在考虑构建一个仅使用一次性密码的网站用户身份验证系统:每次正常使用普通密码时,用户都会在电子邮件中收到一个密码,例如用于注册、登录、冒险操作和帐户删除。
我看到的一些似乎并不重要的问题:
- 无法更改密码以使所有现有会话失效 - 可以通过在服务器端存储会话并有办法为用户使它们失效来解决
- 任何人都可以检查某个电子邮件是否已在系统中注册 - 对于通用网站来说似乎不是关键问题
- 任何人都可以为任何电子邮件请求 OTP - 将使用每个远程连接的 API 限制和每小时 1 个未使用的 OTP 的限制来处理
虽然我没有看到这种方法被提及或在野外使用。它有什么主要缺点吗?非常感谢!
仅通过电子邮件发送 OTP 比仅通过密码更安全(这基本上就像强迫用户每 X 小时更改一次密码)。
我想解决您的一些非关键点,并强调一些缺点。
非关键
使会话无效
您不必存储所有会话,只需存储无效的会话,并且只存储会话的最长持续时间。
检查用户(电子邮件)是否已注册
这实际上 是 一个问题 - 它告诉您电子邮件所有者使用该网站,这是一个隐私问题,但是很小。
而且,它还是一个攻击媒介。攻击者可以抓取您的用户列表,或者只是去攻击其他站点上的该用户,假设这封电子邮件存在并且链接到真人。此外,他们可以代表他们发出过多的 OTP 请求,我稍后会解决这个问题。
综上所述,没有理由仅仅因为 OTP 就会出现此问题。用户可以请求 OTP,您可以随时回复 "If the email address hello@world.com is registered, a one-time password has been sent to it"。这仅对可用性有轻微影响。
任何人都可以为任何电子邮件请求 OTP
如果攻击者可以通过 hello@world.com 的 OTP 请求淹没您的站点(来自不同的 IP 地址),您要么阻止该用户(即该用户已被 DoS'ed),要么您该站点将淹没用户的邮箱,这可以使该邮件服务器将该站点标记为垃圾邮件发送者。
这也可以在使用密码重置电子邮件的普通站点中完成,但这就是为什么您通常希望您的用户列表是保密的。
更大的缺点
可用性
仅 OTP 登录假定您登录的设备也登录到链接到该站点的邮件帐户。否则,用户必须登录邮件帐户才能登录您的站点。
单因素身份验证
安全社区正在推动多因素身份验证,其中密码通常是第一因素。一个好的做法是至少允许选择 2FA 的用户。
帐户锁定
如果用户的电子邮件帐户出于某种原因无法再访问(例如,他们使用了他们的工作或大学电子邮件),他们将无法登录,甚至无法将他们的电子邮件地址更改为新地址。
电子邮件activity
如果该站点被大量使用,那么它会一直不断地向各种 public 电子邮件服务发送 大量 电子邮件。
仅此一项就可能导致站点被标记为垃圾邮件发送者,甚至被限制速率。
如果它确实受到速率限制,一些用户将无法登录。