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

hi3rlvi2  于 2021-07-05  发布在  Java
关注(0)|答案(0)|浏览(193)

我正在设计一个登录系统,使用otp和注册用户的email id执行登录操作。
目前的做法如下
用户输入注册的电子邮件id
如果电子邮件id有效,服务器将事务id作为cookie发送到ui,并将otp发送到附加到该电子邮件id的电话号码
otp在redis中存储2分钟,其中事务id是键,otp是值
当用户输入otp时,服务器使用cookie发送的事务id检查输入的otp是否相同
如果用户输入错误的otp超过3次,我将暂停该用户。这是通过使用最初在向用户的移动电话发送otp时生成的事务id跟踪无效尝试来实现的。
当前设计面临的障碍
如果用户试图同时登录不同的浏览器,我应该发送我第一次创建的同一个otp,还是应该发送不同的otp,因为我使用事务id将它们视为单独的,还是应该一次只允许一个登录过程。因为如果otp的有效期为2分钟,而用户试图在这2分钟内从不同的浏览器登录,那么我应该如何处理呢。
无效尝试当前基于生成otp时发送的事务id进行计数,因此如果用户刷新浏览器或使用匿名模式,则失败尝试将丢失,因为旧的事务id不再存在。如果我在用户级别上保持失败计数,那么从浏览器输入无效的otp也会影响其他浏览器上的失败计数。
我正在寻找一些指导方针来实现一个安全的otp登录验证机制

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题