انتقل إلى محتوى الدرس

Throttling Login Attempts Securely حماية الدخول بتحديد المحاولات

حماية المسارات بالبرمجية الوسيطة auth واستخدام توجيهي @auth و @guest في القوالب وحماية تسجيل الدخول بتحديد معدل المحاولات RateLimiter.
1 صفوف تعليمية
إطار العمل Laravel
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تُعد مسارات الدخول هدفاً رئيسياً لهجمات تخمين كلمات المرور، لذا يجب تتبع المحاولات الفاشلة عبر واجهة 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);