Php 如何检查一个用户是否有超过5次登录失败并防止暴力
我希望避免用户多次登录失败,同时防止攻击。如果失败的登录次数为5次或更多,则将有验证码或禁用访问15分钟 在下面,您可以找到有关用户成功登录或未成功登录时发生的情况的代码。缺少一些代码,我在正确登录时使用会话 登录失败的次数可在false_logins列中找到Php 如何检查一个用户是否有超过5次登录失败并防止暴力,php,mysql,Php,Mysql,我希望避免用户多次登录失败,同时防止攻击。如果失败的登录次数为5次或更多,则将有验证码或禁用访问15分钟 在下面,您可以找到有关用户成功登录或未成功登录时发生的情况的代码。缺少一些代码,我在正确登录时使用会话 登录失败的次数可在false_logins列中找到 $result使用查询检查是否找到了$login和$password 谢谢你 $result=mysql_query($qry); $member = mysql_fetch_assoc($result); //Check whethe
$result
使用查询检查是否找到了$login
和$password
谢谢你
$result=mysql_query($qry);
$member = mysql_fetch_assoc($result);
//Check whether the query was successful or not and if user is verified. Verified users have empty value
if($result) {
if ( (mysql_num_rows($result) == 1) && (!$member['verified']) ){
//Login Successful
mysql_query("UPDATE members SET ip = '$ip', false_login = '0' WHERE login = '$login'");
header("location: member-index.php");
exit();
}else {
//Login failed
mysql_query("UPDATE members SET false_login = false_login+1 WHERE login = '$login'");
header("location: login-failed.php");
exit();
}
}else {
die("Query failed");
}
您最好创建一个包含
ip+date
列的登录失败历史记录表。并查看在一段时间内是否有超过N次来自同一IP的失败尝试
如果发生了这种情况,你可以像谷歌一样使用验证码,例如。除非您更改代码以将登录尝试次数存储在cookie或会话变量中,否则您将不得不在某个时刻获取false_login字段的更新值。@Brent Friar:只要BruteForces在登录失败时几乎不保留会话cookie或任何cookie,cookie或会话解决方案将失败。基于此代码,只要知道你的$login,我就可以给你一些麻烦(把你锁在外面)。@mmhan你有什么建议?是的,泽克姆斯,我错过了问题的暴力部分。@Giorkouros:你实际上不能得到或写什么?