تخطَّ إلى المحتوى

Broken Authentication

كسر المصادقة Broken Authentication

API2:2023 — ثغرات في آلية تسجيل الدخول أو إدارة الرموز تسمح للمهاجم بانتحال هوية مستخدم شرعي.

تشمل هذه الفئة كل ما يضعف التحقق من هوية المستخدم: كلمات مرور بلا حد أدنى للقوة، عدم وجود Rate Limiting على /login (يسمح بـ Brute Force)، رموز JWT بلا انتهاء صلاحية أو بخوارزمية توقيع ضعيفة، ومفاتيح API ثابتة لا تنتهي أبدًا.

نقطة يخطئ فيها كثيرون: تأمين شاشة تسجيل الدخول لا يكفي — يجب تأمين كل مسار حساس متعلق بالهوية: تجديد كلمة المرور، تأكيد البريد، وتحديث الرمز (refresh token).

الصياغة

POST /api/auth/login  →  Rate Limit + هاش قوي + JWT قصير العمر

📄 مثال

// سيئ
const token = jwt.sign({ userId: user.id }, SECRET); // بلا expiry

// جيد
const token = jwt.sign({ userId: user.id }, SECRET, { expiresIn: '15m' });
const refreshToken = jwt.sign({ userId: user.id }, REFRESH_SECRET, { expiresIn: '7d' });

// Rate limiting لتسجيل الدخول
const rateLimit = require('express-rate-limit');
app.post('/api/auth/login', rateLimit({ windowMs: 60 * 60 * 1000, max: 5 }), loginHandler);

أهم النقاط

النقطةالوظيفة
كلمات المرورbcrypt (cost 12+) أو argon2 — لا تخزّنها أبدًا كنص صريح أو MD5/SHA1
JWTخوارزمية توقيع قوية (RS256/HS256)، انتهاء صلاحية قصير، لا تضع أسرارًا بالـ payload
MFAطبقة تحقق إضافية للحسابات الحساسة (إدارية أو مالية)

💡 نصائح عملية

  • أبطل كل الجلسات القديمة فور تغيير كلمة المرور

⚠️ أخطاء شائعة

  • رسائل خطأ تكشف هل البريد موجود أم لا ('البريد غير مسجل' مقابل 'كلمة مرور خاطئة') — توحّد الرسالة أفضل

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار API-SECURITY الكامل بالعربي.