我正在研究阻止用户强制登录脚本的方法。我找到了两个好方法:
-Use reCaptcha
-Check database before verifying user info to see how
many requests the user has made in the last x secs/mins
我宁愿不必使用验证码,因为它们很难看,我知道很多用户都不喜欢它们,我认为数据库方法效率不高
想象一下,用户运行一个bruteforcer并且每秒发出大量请求。如果必须建立连接,那么在数据库服务器上是不是很难 - >获取之前的请求数量 - >每秒关闭一次?
我的意思是,我总是可以设置它,以便在x秒后阻止用户的IP连接到我的服务器,但数据库方法仍然是最好的方法吗?
有谁知道防止登录暴力的好方法?我运行了安装了最新nginx的Ubuntu 13.10服务器。
答案 0 :(得分:0)
如果您正在使用PHP(并且问题中的术语“NGINX”让我这么认为),那么您可以比较用户上次操作之间的差异(以毫秒为单位)(页面视图/表单提交/ ... )和当前时间戳(使用$ _SESSION)
示例:强> 下面的代码应放在app标题中(page_top.php或其他)
session_start();
$threshold = 500; // miliseconds
$_SESSION["current_timestamp"] = microtime(true);
if ($_SESSION["current_timestamp"] - $_SESSION["last_timestamp"] <= $threshold) {
// 500 miliseconds didn't pass since the user last action
die('Slow down ...');
}
else {
// update the last timestamp with the current one
$_SESSION["last_timestamp"] = $_SESSION["current_timestamp"];
}