重複の可能性:
PHP でのユーザー ログイン試行の制限
ログインに3回失敗した後、ユーザーアクセスをブロックするために、ログインにセキュリティを設定しようとしています。たとえば、特定のユーザーが間違ったユーザー名またはパスワードで 3 回ログインしようとした場合、ユーザーが 10 分後に再試行する必要があるというダイアログまたはメッセージを表示する必要があります (例として)。
10 分後、ユーザーは正しいユーザー名とパスワードで再度ログインできます。
それ、どうやったら出来るの?
重複の可能性:
PHP でのユーザー ログイン試行の制限
ログインに3回失敗した後、ユーザーアクセスをブロックするために、ログインにセキュリティを設定しようとしています。たとえば、特定のユーザーが間違ったユーザー名またはパスワードで 3 回ログインしようとした場合、ユーザーが 10 分後に再試行する必要があるというダイアログまたはメッセージを表示する必要があります (例として)。
10 分後、ユーザーは正しいユーザー名とパスワードで再度ログインできます。
それ、どうやったら出来るの?
最も簡単な方法は、SESSION を使用してログインに失敗した回数を保存することです。ユーザー ログインが間違ったユーザー名またはパスワードを使用するたびに、カウントを増やします。そのように:
if(isset($_SESSION['num_login_fail']))
{
if($_SESSION['num_login_fail'] == 3)
{
if(time() - $_SESSION['last_login_time'] < 10*60*60 )
{
// alert to user wait for 10 minutes afer
return;
}
else
{
//after 10 minutes
$_SESSION['num_login_fail'] = 0;
}
}
}
$sucess = doLogin() // your check login function
if($success)
{
$_SESSION['num_login_fail'] = 0;
//your code here
}
else
{
$_SESSION['num_login_fail'] ++;
$_SESSION['last_login_time'] = time();
}
ただし、ユーザーはブラウザをオフにしてから再度開くことでバイパスできます。すべてのユーザーのセッションは null になります。より完璧にするために、データベースに num_login_fail と last_login_time を保存できます。
var を使用して$_SESSION
、試行回数と試行回数を保存できます。これは、ユーザーがまだ同じセッションを持っている場合 (たとえば、ブラウザーを閉じていない場合) にのみ機能します。永続化する場合は、Cookie を使用します。ユーザーがこれを回避できないようにする場合は、IP の db 値を使用しますが、NAT などの場合は問題になります。$_SESSION
varでログに記録された 3 回の試行が失敗した後、IP をブロックすることができます。
私の意見では、Cookie またはセッションでも問題を解決できますが、私の意見では、これらの方法は完全ではありません。特に安全性に重点を置いている場合はそうです。ユーザーが Cookie を消去するとどうなりますか?