gpt4 book ai didi

php - 在 Laravel 中验证用户时防止暴力攻击

转载 作者:可可西里 更新时间:2023-11-01 13:41:17 24 4
gpt4 key购买 nike

是否可以使用 Laravel 的 Authenticating A User With Conditions防止暴力攻击?

answer for PHP ,建议向您的数据库添加两列(TimeOfLastFailedLoginNumberOfFailedAttempts),然后在每次登录尝试时检查这些值。

这是使用条件对用户进行身份验证的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com