作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
是否可以使用 Laravel 的 Authenticating A User With Conditions防止暴力攻击?
这answer for PHP ,建议向您的数据库添加两列(TimeOfLastFailedLogin
和 NumberOfFailedAttempts
),然后在每次登录尝试时检查这些值。
这是使用条件对用户进行身份验证的 Laravel 语法:
if (Auth::attempt(array('email' => $email, 'password' => $password, 'active' => 1)))
{
// The user is active, not suspended, and exists.
}
有什么方法可以使用条件参数来检查指定时间段内的尝试次数吗?例如,在过去 60 秒内少于 3 个请求。
最佳答案
您可以创建像下面的类一样简单的东西来帮助您防止这种情况发生:
class Login {
public function attempt($credentials)
{
if ( ! $user = User::where('email' => $credentials['email'])->first())
{
//throw new Exception user not found
}
$user->login_attempts++;
if ($user->login_attempts > 2)
{
if (Carbon::now()->diffInSeconds($user->last_login_attempt) < 60)
{
//trow new Exception to wait a while
}
$user->login_attempts = 0;
}
if ( ! Auth::attempt($credentials))
{
$user->last_login_attempt = Carbon::now();
$user->save();
//trow new Exception wrong password
}
$user->login_attempts = 0;
$user->save();
return true;
}
}
或者你可以使用一个包,比如 Sentry ,它为您控制节流。 Sentry 是开源的。
关于php - 在 Laravel 中验证用户时防止暴力攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26026338/
用户将输入重量阈值、物体数量以及 3 个物体的重量和成本。输出应该是背包图,并且应该显示最优解。 重量应该最大,成本应该最小。 示例输出: w=60 n=3 w = 10 w2 = 35 w3 = 3
所以我在学习 Python 的同时从“Violent Python”开始黑客攻击,我遇到了一个问题这是我的代码: import optparse import socket from socket i
我是一名优秀的程序员,十分优秀!