私はセキュリティに比較的慣れていないので、作成しているWebアプリケーションへのブルートフォースログインを防止したいと考えています。
いくつかの調査を行った後、ユーザーが一定の時間内にログインを試行しすぎたときにキャプチャを要求することにしましたが、これに関するベストプラクティスに関するドキュメントは多くありませんが、単純な例とオープンソースパッケージがたくさんあります(私はそれらがどのようにそしてなぜ働くかについてのより深い理解なしに使うのをためらいます)。
私はすでにセッションを設定しているので、セッショントークン自体にIPアドレスを含め(これはすべて暗号化されています)、特定の時間内に特定の回数のログイン試行のみが行われるようにクロスチェックすることを考えていました。キャプチャが必要です。送信者のIPアドレスがセッションのIPと一致することを確認できるため、セッションの盗用を防止できるというメリットがあると私は考えていました。
このアプローチはうまくいくでしょうか、それとも危険信号を発しますか?
考えるべきことがいくつかあります。
ログインの試行は、クライアントが有効なセッションCookieを送信した場合にのみ有効であることを確認する必要があります。そうしないと、攻撃者はセッションCookieを送信できなくなり、ログインを試みるたびに攻撃者のために新しいCookieを生成できます。それは解決するのが難しい問題のようです。攻撃者が望んでいない場合、どのようにして攻撃者にCookieを送信させるのですか?
ログイン試行がすべて同じIPアドレスから行われると想定するのはなぜですか?複数のIPから攻撃が仕掛けられた場合はどうなりますか?
攻撃者が1人のユーザーを攻撃しようとせず、ユーザー名とパスワードの全範囲を試みた場合はどうなりますか?つまり、進行中の攻撃を検出することはできません。これは、ユーザーが連続して何度もログインを試行することがないためです。
IMO、クライアントが誰であるかに関係なく、またセッションCookieを取得するか、ない。
オープンソースパッケージ(主流のディストリビューションに同梱されている安定した評判の高いパッケージ)は、オープンソースアドバイス;よりもはるかにリスクが低く、悪いアドバイスが山ほどあります。ところで、このアドバイスはかなり合法です! ;)
したがって、健康的な懐疑論(パラノイアではない)はセキュリティに役立ち、良いスタートを切ることができます。
一般的に:1.連携するには、複数の保護が必要です。最後に、少なくともある程度はすべての脅威をカバーしているかどうかを調べてください。 2.すべての状況で完全に防止することはすばらしいですが、ほとんどの場合、ターゲットを絞っていない攻撃者にとって不経済になるように障壁を高くすることで十分です。
すなわち:
お役に立てれば。