أمان إدارة الجلسات: إعدادات الكوكيز وتدوير التوكن وتسجيل الخروج
تنفيذ إدارة جلسات آمنة مع إعدادات كوكيز صحيحة وتدوير التوكن وتدفقات تسجيل الخروج. يغطي تثبيت الجلسة ومنع الاختطاف والتعامل متعدد الأجهزة.
مقدمة
إدارة الجلسات هي أساس مصادقة المستخدم. التعامل السيئ مع الجلسات يؤدي إلى الاستيلاء على الحسابات وانتهاكات البيانات ومخالفات الامتثال.
تكوين ملفات تعريف الارتباط الآمنة
const sessionCookieOptions: CookieOptions = { httpOnly: true, // يمنع وصول JavaScript (حماية XSS) secure: true, // HTTPS فقط sameSite: 'strict', // حماية CSRF maxAge: 24 * 60 * 60 * 1000, path: '/', }; res.cookie('sessionId', sessionId, sessionCookieOptions);
حماية CSRF
// نمط توكن المزامنة const csrfProtection = csrf({ cookie: { httpOnly: true, secure: true, sameSite: 'strict', }, }); // لتطبيقات SPA: نمط ملف تعريف الارتباط المزدوج app.use((req, res, next) => { if (['POST', 'PUT', 'DELETE'].includes(req.method)) { const cookieToken = req.cookies['csrf-token']; const headerToken = req.headers['x-csrf-token']; if (!cookieToken || cookieToken !== headerToken) { return res.status(403).json({ error: 'فشل التحقق من CSRF' }); } } next(); });
منع تثبيت الجلسة
class SessionService { async login(req: Request, res: Response, user: User): Promise<void> { // دائماً أعد إنشاء الجلسة عند تسجيل الدخول const newSessionId = await this.regenerateSession(req); await this.sessionStore.set(newSessionId, { userId: user.id, createdAt: new Date(), ipAddress: req.ip, }); res.cookie('sessionId', newSessionId, sessionCookieOptions); } }
مهلة الجلسة
class SessionManager { async validateSession(sessionId: string): Promise<SessionValidationResult> { const session = await this.sessionStore.get(sessionId); if (!session) { return { valid: false, reason: 'الجلسة غير موجودة' }; } const now = Date.now(); // التحقق من المهلة المطلقة if (now - session.createdAt > this.config.absoluteTimeout) { await this.sessionStore.delete(sessionId); return { valid: false, reason: 'انتهت المهلة المطلقة' }; } // التحقق من مهلة الخمول if (now - session.lastActivityAt > this.config.idleTimeout) { await this.sessionStore.delete(sessionId); return { valid: false, reason: 'انتهت مهلة الخمول' }; } return { valid: true, session }; } }
تسجيل الخروج الآمن
async function logout(req: Request, res: Response): Promise<void> { const sessionId = req.cookies.sessionId; if (sessionId) { await sessionStore.delete(sessionId); await tokenService.revokeSessionTokens(sessionId); } res.clearCookie('sessionId', { path: '/' }); res.clearCookie('refreshToken', { path: '/api/auth/refresh' }); res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate'); res.json({ message: 'تم تسجيل الخروج بنجاح' }); }
الخلاصة
إدارة الجلسات الآمنة تتطلب:
- علامات ملفات تعريف الارتباط الآمنة - httpOnly وsecure وsameSite
- حماية CSRF - التوكنات أو ملفات تعريف الارتباط المزدوجة
- إعادة إنشاء الجلسة - عند تسجيل الدخول وتغييرات الامتيازات
- سياسات المهلة - الخمول والمطلقة
- تسجيل الخروج المناسب - إبطال في كل مكان
تذكر: الجلسات هي مفاتيح حسابات مستخدميك. احمها وفقاً لذلك.
مقالات ذات صلة
هندسة الأمانقراءة 23 دقيقة
أفضل ممارسات مصادقة JWT: Refresh Tokens و RBAC و OAuth 2.0
تنفيذ مصادقة JWT آمنة مع تدوير refresh token و RBAC وتدفقات OAuth 2.0. أنماط إنتاجية من أنظمة الرعاية الصحية والحكومة.
هندسة الأمانقراءة 20 دقيقة
قائمة فحص أمان API: Rate Limiting والتحقق من المدخلات وتكوين CORS
تأمين APIs مع rate limiting والتحقق من المدخلات وتكوين CORS. قائمة فحص مختبرة إنتاجياً تغطي المصادقة والتشفير ومعالجة الأخطاء.
هندسة الأمانقراءة 18 دقيقة
كيفية منع SQL Injection و XSS: دليل الوقاية الكامل مع الكود
منع هجمات SQL injection و NoSQL injection و XSS مع أنماط كود مُتحقق منها. يغطي الاستعلامات المعاملة وتعقيم المدخلات وتكوين CSP.
تكامل بوابات الدفعقراءة 32 دقيقة
تكامل Stripe مع React و Node.js: Payment Intents و Webhooks و 3D Secure
تكامل Stripe الإنتاجي مع Payment Intents و webhooks و 3D Secure. يغطي فواتير الاشتراكات ومعالجة الأخطاء وأنماط امتثال PCI.
تكامل بوابات الدفعقراءة 28 دقيقة
تكامل HyperPay للدفع في السعودية والخليج: دليل المطور الكامل
تكامل HyperPay جاهز للإنتاج للتجارة الإلكترونية السعودية والخليجية. يغطي معالجة بطاقات مدى و STC Pay و Apple Pay ونماذج Copy and Pay ومتطلبات الامتثال لـ SAMA.