有关TOTP过期问题
来源:6-1 多因子认证和TOTP
LayLowMay
2021-04-02
老师您好, 我想与您讨论一下验证码生成组件的问题
[业务场景]
我们假设这么一个业务场景, 我们totp的duration设置的是5分钟.
一个totp时间已经到了4分55秒了.
这个时候用户点击了, 获取验证码, totp被发送出去了.
5分钟到了, totp刷新了, 这是用户都还没来得及把totp输入验证并且登陆.
再输入, 用户发现验证码过期了, 这样就很莫名其妙.
这里是我能想到的两种解决方案, 老师您能不能斧正一下我不成熟的想法.
[解决方案]
- 仍旧使用totp生成验证码
但由于totGenerator继承hotGenerator, 所以也是使用counter去生成不同密码.
利用counter反推下一次密码变化的时间戳, 再计算出距离下一次密码变化有多长时间, 然后跟验证码一起发送给用户.
但接近过期的时候还是会没输入验证成功就失效. - 直接使用hotGenerator, counter则在用户表新增一个字段verify_code_counter, 从1开始自增.
每次请求verify验证码的接口都自增一次, 等于刷新了验证码
写回答
2回答
-
接灰的电子产品
2021-04-02
是的,一般可以对边界附近的时间进行特殊处理,生成totp进行处理即可
10 -
LayLowMay
提问者
2021-04-02
百度说这是边界问题, 如果出现了可以减一往前推五分钟, 如果能校验证明有效
00
相似问题