web-dev-qa-db-ja.com

再送信のたびにOTPコードを変更する理由はありますか?

この質問は、次のようなフローで使用されるOTPコードについてです

  • メール確認
  • SMS 2fa

通常、OTPを送信する場合、OTPを再送信するオプションをユーザーに提供します。

次の保護が実施されていると仮定します。

  1. 正しいコードを入力する試行回数を制限します(ブルートフォースから保護します)
  2. 特定の時間枠内でコードを再送信する試行回数を制限します(受信者へのスパム送信を防ぎます)
  3. コードの有効期限が短い

再送信のたびに新しいOTPコードを生成する理由はありますか?もしそうなら、再送が行われた後、以前のコードを取り消すことが本当に必要ですか?

再送信の試行で同じコードを送信するFacebookなどのサービスを見てきました。使いやすさの点では、最初のコードが遅れて到着した場合にユーザーがどのコードを入力するかについて混乱しないように、同じコードを送信することをお勧めします。しかし、それが実際にセキュリティに影響するかどうかはわかりません。

1
Michael

コードを再送信する試行回数を制限する

これは解決する必要がある問題です。再送信の試行を制限することはお勧めできません。誰かが再送信を要求する必要がある場合、何が大丈夫かをどのように決定しますか? OTPの受信に遅延がある場合、ユーザーはどのOTPが最新のものであるかをどのように判断しますか?ここに大きなUX問題があります。

再送信を制限することは良い考えではないので、コードを少しの間存続させる必要があります。そうしないと、ユーザーが永続的なDoS攻撃にさらされ、誰かがOTPリクエストを自動化して、以前に送信されたすべてのコードを無効にします。

したがって、再送信を制限するには、OTPを少しの間有効にするだけで解決されるUX問題を作成します。 OTPが正常に使用されたら、それを無効にします。

したがって、いいえ、すべてのリクエストでOTPを変更するセキュリティ上の理由はありません。それを少しの間存続させることにもリスクはありません。

3
schroeder