ユーザーのログイン試行が制限されている Web アプリを見てきました。
それはセキュリティ上の必要性ですか? もしそうなら、それはなぜですか?
例: ログインに 3 回失敗しました。10 分後にもう一度試してみましょう。
ユーザーのログイン試行が制限されている Web アプリを見てきました。
それはセキュリティ上の必要性ですか? もしそうなら、それはなぜですか?
例: ログインに 3 回失敗しました。10 分後にもう一度試してみましょう。
Web サイトでの試行回数を制限するのは、サイトへのブルート フォース (自動化された) 攻撃を防ぐためです。これらの試行を制限しないと、ハッカーがスクリプトを設定して、パスワードが見つかるまでパスワードを推測し続ける可能性があり、Web サーバーの可用性に影響を与える可能性があります。
通常、3 回試行した後にユーザーをタイムアウト (前述のように 10 分) し、6 回または 9 回連続して試行した後にロックアウトして、ユーザーがアカウントのロックを解除するためにあなたに連絡するように強制することができます。これは、誰かがスクリプトを変更してタイムアウトを調整できるためです。
ユーザーが独自のパスワードを設定できる場合、一部のボット/子供は一般的なパスワードのリストを使用してログインを試み、成功します。また、ユーザーを知らない場合は、admin、simon、rico などの一般的な名前を試します。
セッション中のユーザーにフラグを立てるだけでは役に立ちません。ユーザーは最後に Cookie またはクエリ パラメータを削除できるからです。IP とログイン名の両方について、失敗したログイン試行の数が必要です。多くのユーザー間で共有できるため、IP に対してより寛容になる可能性があります。
明確化 これは他の回答の完成です。たとえば、セッションを使用したブルートフォース防止メカニズムとともに、適切に実装されたキャプチャを使用します。
質問者は、キャプチャが機械で読み取れないと仮定してこれを受け入れたとマークし(彼女はほぼ正しい)、人々はそれが完全な答えではなく、正しいと考えているため、否定的なポイントを得ています.
また、適切に実装された CAPTCHA を使用することは、ブルート フォース攻撃に対するアプリケーション セキュリティを強化する別の方法になる可能性があります。無料で利用できるさまざまなキャプチャ プロバイダーがあります。急いでいる場合は、簡単な方法を試してみましょう。また、 「ああ、いや! このキャプチャは十分に安全ではなく、時々正しい!」と言っている人がいることを考慮してください。.
「ご存じない方のために説明すると、CAPTCHA とは、ユーザーが人間なのか別のコンピューターなのかを判別できるプログラムです。これらは、Gmail にサインアップするときやコメントを残すときに翻訳する、歪んだテキストの小さな画像です。彼らの目的は、誰かがコンピューターを使用して何百万ものオンライン アカウントに自動的にサインアップしないようにすること、または.." ref .
私自身のプロジェクトでは、このようなことを処理する一般化された「floodcontrol」ライブラリを作成しました。
X 時間内に何回試行できるかを指定できます。短時間に一定回数の「グレース」試行を許可するため、本当に異常な動作のみが検出されます。
データベースにいくつかのことを記録します。
試行ごとに、部分的な IP アドレスとアクションに対してクエリを実行し、以前の試行が特定の時間枠内に行われた場合は、その試行の試行カウンターをインクリメントします。試行カウンターが許可された猶予試行回数を超えた場合、最後の試行が現在から X 秒以内であったかどうかを確認し、そうである場合は false を返します。したがって、アクションはブロックされます (ユーザーは、試行する前に X 秒待つように指示されます)。また)。試行カウンターが猶予試行回数を下回っている場合は、true を返し、スライドさせます。
同じ IP を持つ人が後で来た場合、以前の試行回数は取得されません。
DB に「失敗した試行」カウンターを配置するのが、最も安全で簡単な方法だと思います。そうすれば、ユーザーはそれをバイパスできません (Cookie を無効にすることにより)。もちろん、ログインに成功するとリセットされます。
IPおよび/またはユーザー名でカウントできます。IP の利点は、複数のアカウントをハッキングしようとする 1 人のユーザーをブロックできることです。ユーザー名でカウントする場合、サーバー ファームを使用してユーザーをブロックでき、同じネットワーク上のユーザーを誤ってスロットルすることはありません。
はい、アカウントのパスワードを推測しようとする人に至るまで、高度なブルート フォース攻撃 (ボットや辞書ファイルを使用する場合など) からアカウントを保護する必要があります。
正しいログインの後に失敗した試行をリセットすると、システム全体がほとんど無価値になります。
登録済みのユーザーは、他人のアカウントとパスワードを 3 回推測してから、自分のアカウントでログインしてカウンターをリセットし、これを繰り返すことができます。これも自動化できます。したがって、通常の登録ユーザーは、たとえば、管理者パスワードをブルート フォースできます。
リセットは、単にログインに成功するだけでなく、管理者が行う必要があります。