تخطَّ إلى المحتوى
ARAB CODEمجتمع المطورين العرب

سجل التعديلات

العودة إلى المقال

الفرق مقارنةً بالنسخة السابقة

+ **المصادقة** تجيب عن سؤال: **من أنت؟** وهي تختلف عن [التفويض](/wiki/authorization) الذي يجيب عن: **ماذا يحق لك أن تفعل؟**
+ ## تخزين كلمات المرور
+
+ لا تخزن كلمة المرور نفسها، ولا تشفرها تشفيراً قابلاً للفك، ولا تستخدم دوال تجزئة سريعة مثل MD5 أو SHA-256 وحدها. استخدم خوارزمية مخصصة لكلمات المرور، بطيئة ومع ملح (salt) لكل مستخدم: **Argon2id** (المفضلة) أو **scrypt** أو **bcrypt**.
+
+ ```js
+ import argon2 from 'argon2';
+ const hash = await argon2.hash(password); // عند التسجيل
+ const ok = await argon2.verify(hash, attempt); // عند الدخول
+ ```
+
+ ## الجلسات
+
+ بعد التحقق ينشئ الخادم جلسة ويرسل معرفاً عشوائياً طويلاً في ملف تعريف ارتباط (cookie):
+
+ ```
+ Set-Cookie: session=<random>; HttpOnly; Secure; SameSite=Lax; Path=/
+ ```
+
+ - `HttpOnly`: لا تقرؤه JavaScript (يحد من سرقته عبر XSS).
+ - `Secure`: يُرسل عبر HTTPS فقط.
+ - `SameSite`: يحد من إرساله في طلبات من مواقع أخرى (CSRF).
+
+ جدّد معرف الجلسة عند تسجيل الدخول، وأبطله على الخادم عند تسجيل الخروج.
+
+ ## الرموز (Tokens)
+
+ رموز JWT موقعة ومناسبة بين الخدمات، لكن إبطالها قبل انتهاء صلاحيتها صعب. لتطبيقات الويب التقليدية تكون الجلسات المخزنة على الخادم أبسط وأسهل إبطالاً.
+
+ ## المصادقة متعددة العوامل
+
+ أضف عاملاً ثانياً: رمز TOTP من تطبيق مصادقة، أو مفتاح أمان (WebAuthn / Passkeys). رموز SMS أضعف لكنها أفضل من لا شيء.
+
+ ## الحماية من التخمين
+
+ - حد لمحاولات الدخول لكل حساب ولكل عنوان IP.
+ - رسالة خطأ موحدة: «البريد أو كلمة المرور غير صحيحة» حتى لا تكشف وجود الحساب.
+ - فحص كلمات المرور الجديدة مقابل قوائم كلمات المرور المسربة.
+
+ ## أخطاء شائعة
+
+ - تخزين رمز الجلسة في `localStorage` (تقرؤه أي JavaScript على الصفحة).
+ - روابط استعادة كلمة المرور بلا انتهاء صلاحية أو قابلة لإعادة الاستخدام.
  1. معتمدالنسخة الحاليةفريق عرب كودرسمي

    مقال مرجعي رسمي من فريق عرب كود

    ملاحظة المراجعة: Approved for publication: site owner written instruction 2026-10-24 (final completion directive: populate the wiki via the official editorial identity)