この質問は、次のようなフローで使用されるOTPコードについてです
通常、OTPを送信する場合、OTPを再送信するオプションをユーザーに提供します。
次の保護が実施されていると仮定します。
再送信のたびに新しいOTPコードを生成する理由はありますか?もしそうなら、再送が行われた後、以前のコードを取り消すことが本当に必要ですか?
再送信の試行で同じコードを送信するFacebookなどのサービスを見てきました。使いやすさの点では、最初のコードが遅れて到着した場合にユーザーがどのコードを入力するかについて混乱しないように、同じコードを送信することをお勧めします。しかし、それが実際にセキュリティに影響するかどうかはわかりません。
コードを再送信する試行回数を制限する
これは解決する必要がある問題です。再送信の試行を制限することはお勧めできません。誰かが再送信を要求する必要がある場合、何が大丈夫かをどのように決定しますか? OTPの受信に遅延がある場合、ユーザーはどのOTPが最新のものであるかをどのように判断しますか?ここに大きなUX問題があります。
再送信を制限することは良い考えではないので、コードを少しの間存続させる必要があります。そうしないと、ユーザーが永続的なDoS攻撃にさらされ、誰かがOTPリクエストを自動化して、以前に送信されたすべてのコードを無効にします。
したがって、再送信を制限するには、OTPを少しの間有効にするだけで解決されるUX問題を作成します。 OTPが正常に使用されたら、それを無効にします。
したがって、いいえ、すべてのリクエストでOTPを変更するセキュリティ上の理由はありません。それを少しの間存続させることにもリスクはありません。