تكرار السؤال: …
الإجابة المختصرة
يخزن الـ Refresh Token في Cookie محمية بـ HttpOnly وSameSite، ومع كل استخدام يُبطل الرمز الحالي ويولد زوج جديد، وإذا استُخدم رمز ملغى يُحظر كامل سجل المستخدم.
الشرح
لتفادي مخاطر سرقة الـ Access Token قصير الأجل، يتم استخدام Refresh Token صالح لفترة أطول. لحمايته من ثغرات XSS، يُخزن داخل كوكي موسومة بـ HttpOnly وSecure وSameSite=Strict. استراتيجية الـ Rotation تعني أنه عند طلب تجديد الـ Access Token، يتم إلغاء الـ Refresh Token المستخدم فوراً وتوليد آخر بديل؛ وإذا حاول مهاجم استخدام الـ token القديم، يكشف النظام الاختراق فوراً ويبطل كل جلسات المستخدم.
مثال بالكود
res.cookie("refreshToken", token, {
httpOnly: true,
secure: process.env.NODE_ENV === "production",
sameSite: "strict",
maxAge: 7 * 24 * 60 * 60 * 1000
});أخطاء شائعة
- تخزين رموز المصادقة والـ Refresh Tokens في localStorage بالمتصفح مما يجعلها عرضة للسرقة المباشرة عبر XSS.