شرح صفوف ومحتوى الفقرة
تُعد مسارات الدخول هدفاً رئيسياً لهجمات تخمين كلمات المرور، لذا يجب تتبع المحاولات الفاشلة عبر واجهة RateLimiter. قبل استدعاء Auth::attempt، افحص تجاوز الحد عبر tooManyAttempts بمفتاح يدمج البريد وعنوان IP، وسجل الفشل بدالة hit وامسح العداد عند النجاح بدالة clear.
- فحص تجاوز الحد (tooManyAttempts): تتحقق مما إذا تجاوز المستخدم عدد المحاولات المسموحة مثل 5 محاولات.
- تسجيل محاولة فاشلة (RateLimiter::hit): تزيد عداد المحاولات الفاشلة مع تحديد زمن التهدئة بالثواني.
- تصفير العداد عند النجاح (RateLimiter::clear): تمسح سجل المحاولات الفاشلة فور نجاح المستخدم في الدخول.
PHP
$key = 'login:' . $request->ip();
if (RateLimiter::tooManyAttempts($key, 5)) {
abort(429, 'Too many login attempts.');
}
if (! Auth::attempt($credentials)) {
RateLimiter::hit($key, 60);
}
RateLimiter::clear($key);