使用具有相同电话号码的OTP处理并行登录和最大无效尝试次数

问题描述

我正在设计一种登录系统,该系统使用OTP和注册用户的电子邮件ID来执行登录操作。

当前方法如下

  1. 用户输入注册的电子邮件ID
  2. 如果电子邮件ID有效,则服务器会将交易ID作为cookie发送到UI,并将OTP发送到该电子邮件ID所附的电话号码
  3. OTP在redis中存储2分钟,其中交易ID是密钥,OTP是值
  4. 用户输入OTP时,服务器使用cookie发送的交易ID检查输入的OTP是否相同
  5. 如果用户输入错误的OTP超过3次,我将暂停用户。这是通过使用将OTP发送到用户的手机时最初生成的交易ID跟踪无效尝试来完成的。

面对当前设计的路障

  1. 操作说明如果用户尝试同时登录不同的浏览器,我应该发送与第一次创建的相同的OTP,还是应该发送不同的OTP,因为我使用事务ID将它们视为分开?我一次只允许一个登录过程。因为如果OTP有效期为2分钟,并且用户尝试在2分钟内从其他浏览器登录,那么我应该如何处理。

  2. 当前会基于生成OTP时发送的事务ID对无效尝试进行计数,因此,如果用户刷新浏览器或使用隐身模式,则失败尝试将丢失,因为较早的事务ID为no更长的时间。如果我将故障计数保持在用户级别,则从浏览器输入无效的otp也会影响其他浏览器的故障计数。

我正在寻找某种指南来实施安全的OTP登录身份验证机制

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)