5

ログインに失敗した認証システムで作業しています。
ユーザーがログインに失敗した場合、データベース内の試行回数が増加し、定義された制限に達した場合、PHPはセッションキャプチャ変数をtrueに設定します。
したがって、ユーザー(またはスパムボット)が再びログインページを取得すると、セッション変数のおかげでキャプチャフォームが表示されます

ただし、スパムボットは最終的にセッションCookieを削除して再試行する可能性があるため、これは効果的でない可能性があります。

代わりにデータベースソリューションを使用する必要がありますか?これをどのように実装しますか(データベースあり/なし)?

4

3 に答える 3

6

スパムボットはセッション制限をかなり簡単に回避できるため、効果を上げるにはデータベースで実行する必要があります。スパムボットは、リクエストごとにIPアドレスを変更することもできますが、これを実現するのは困難です。

ユーザーテーブルに0から始まるログイン試行フィールドを配置し、パスワードを間違えたときにこれをインクリメントし、正常にログインしたときに0にリセットする必要があります。ログイン試行回数が5回を超えるユーザーとしてログインしようとすると、(パスワードが間違っていたとしても)正しく入力する必要のあるキャプチャを含む別のページに移動します。

于 2012-09-02T11:40:14.043 に答える
0

私の見解では、彼/彼女がPHPページにログインしようとしたときにユーザー名を取得し、失敗した場合は、ユーザー名をLogin_attemptsテーブルとそのIPアドレスにも保存します。失敗した試行の列をインクリメントし、たとえば5のしきい値よりも大きいかどうかを確認します。失敗した場合は、キャプチャを追加します。また、特定の時間間隔、たとえば1分間、試行ごとにIPが変化しないことを確認します。失敗した場合でもIPアドレスは同じままで、ログイン試行に失敗します。

NOSQL or memcacheデータベースから高速データを取得するために最適に使用します。

于 2012-09-02T12:09:57.993 に答える
0

ユーザーのセッション変数を記録してから、フォームがIPアドレスに対して送信された回数を数えるだけです。

于 2012-09-02T11:40:06.107 に答える