作为我正在制作的登录系统的一部分,我在以每个客户端命名的唯一会话中跟踪失败的登录尝试:
if($login_failed) {
// update failed login attempts
$session_name = 'failed_attempts'.$_SERVER['REMOTE_ADDR'];
if(!isset($_SESSION[$session_name])) {
$_SESSION[$session_name] = 1;
}
else {
$_SESSION[$session_name] += 1;
}
}
如您所见,为了确定每个会话的唯一名称,我将用户的 IP 地址附加到字符串“failed_login_attempts”的末尾。
如果用户达到 5 次失败尝试,我需要在每次后续尝试时填写验证码。
我只是担心可能存在一些网络,其中许多用户被分配了相同的 IP 地址,在这种情况下,如果 1 个用户无法登录,他们都会开始看到验证码,即使只有 1 个用户需要显示验证码。
这是合理的还是从来没有两个用户可以拥有相同 IP 的情况,例如他们可能有相同的前 3 个八位字节但最后一个数字会不同,在这种情况下我不必担心。
如果多个用户有可能共享同一个 IP,那么确定会话名称的唯一标识符以将未登录用户链接到会话的好方法是什么?