特定の回数の試行後にユーザーをロックアウトしたり、さらにログイン試行が受け入れられた後にかかる時間を延長したりするスキームは、確かに良い考えです。CAPTCHA も同様です (煩わしいことは別として :)しかし、私の意見では、それらは強力なハードウェアでサポートされている場合にのみ意味があります。
これを行うリソースがある場合にのみ試行する必要があると私が考える理由は、そのようなスキームでは、システム内の潜在的にすべてのユーザーに対して最近行われた試行を覚えておく必要があることを覚えておく必要があるためです。確かに、情報を永続化する方法は数多くありますが、その有効性はさまざまです。メモリ内キャッシュ、データベースなどです。
しかし、何があっても、そのようなメカニズムはアプリケーションに追加の負荷をかけることになり、マイナス面もあります。攻撃者がアプリに飽きたりイライラしたりした場合、サービス拒否攻撃でアプリケーションをダウンさせようとする可能性があります。そして、多くの情報を保持する必要がある複雑なログイン スキームは、その目標を達成するのに大いに役立ちます。
このような機能を適用することに決めた場合は、最初にラボでストレステストを行い、「どれだけ使用できるか」を把握することをお勧めします。これにより、ハードウェアをアップグレードする必要があるかどうかがわかります。 )
永続性を必要とせずに実行できる簡単な方法は、PBKDF2、bcrypt、または scrypt などのパスワード ハッシュを適用することです。これらの攻撃者は、可能な限り攻撃を困難にするために人為的に速度を落とします。ただし、これらもアプリケーションに追加の計算負担をかけることに注意してください (ただし、前述の対策よりは少ないと思われます)。そのため、最初にいくつかのストレス テストを行います。