我經常看到使用一次性密碼(OTP)實現的兩因素身份驗證(2FA)方法,其中當前(先前)令牌,有時甚至2或3個先前令牌仍然有效。這樣做可能有幾個原因,我可以想到:
- 以克服客戶端和服務器之間可能的時間同步問題(用戶體驗),
- 為方便起見,系統管理員不要經常收到有關無法登錄的支持電話。
接受以前的OTP是一種不好的做法嗎?如果是的話,關於實現此類“功能”的一般建議是什麼?
如果我輸入錯了,但是當令牌是6位數字時,更正我,可能的組合數是1.000 .000(000000-999999)。因此,在30秒的時間內,只有百萬分之一的令牌被接受。但是,當接受先前的(甚至更多先前的)令牌時,機會基本上是百萬分之二,三,四或五。