-3

ログインに 5 回失敗したユーザーをブロックする必要があります。「userid」、「user」、「attempts」の 3 つの列を持つ「login_attempts」という名前のテーブルがあります。また、「ユーザー名」や「パスワード」などのユーザーの資格情報をチェックする.phpスクリプトがあり、ユーザーがパスワードを正しく入力していない場合、5回チャンスが与えられます。データが「login_attempts」テーブルに保存されていても、おそらくすべてが正常に機能していますが、5 回ログイン試行に失敗した後、ユーザーを 15 分間ブロックする必要があります…どうすれば…助けてください。「process.php」と「login.php」の 2 つのファイルがあります。ガイドしてください…</p>

ありがとう

4

3 に答える 3

2

login_attempts テーブルにタイムスタンプ フィールドを追加して、ユーザーが最後にログインを試みた時間と試行回数を追跡します。ユーザーを認証するときは、試行フィールドが 5 以上であるかどうか、およびユーザーが最後にログインを試みたのがいつかを確認します。最後の試行が 15 分前でない場合は、要求を拒否します。ユーザーが正常にログインしたら、カウントをリセットすることを忘れないでください。

于 2013-03-14T20:44:16.100 に答える
0

考えられる解決策の 1 つは、next_available_retry_time (または好きなもの) と呼ばれる別のフィールドを DB に追加することです。試行回数 == 5 の場合、next_available_retry_time を 15 分後に設定し、試行回数を 0 にリセットします (再起動できるようにします)。

次に、コードで、ユーザー名とパスワードをテストする前に、now() > next_available_retry_time を確認します。そうでない場合は、ログイン試行を拒否します。それ以外の場合は、既存のロジックを続行します。

于 2013-03-14T20:43:13.013 に答える
0

last_attempt の login_attempts テーブルに列を追加し、認証時にチェックを追加して、

attempts > 5
last_attempt in the past 15 minutes

これらの両方に該当する場合、ユーザーのログインを許可しない

last_attempt が 15 分より古い場合は、試行回数を 1 にリセットして、再度認証を試みます。

疑似コードで申し訳ありませんが、お役に立てば幸いです。

于 2013-03-14T20:43:19.487 に答える