ثغرة تزوير الطلبات عبر المواقع Cross-Site Request Forgery (CSRF) وطرق الحماية

Web Application Security | إدارة الجلسات والهوية

ثغرة تزوير الطلبات عبر المواقع Cross-Site Request Forgery (CSRF) وطرق الحماية

Cross-Site Request Forgery (CSRF) & Anti-CSRF Token Defenses
نبذة تقنية: كيف يجبر المهاجم متصفح الضحية المصادق عليه على إرسال طلبات غير مرغوب فيها لتغيير البريد أو كلمة السر أو تحويل الأموال.
🛡️

المحاور الأساسية وخطوات التحصين

🔒 آلية عمل هجوم CSRF

استغلال ثقة الخادم في متصفح الضحية المسجل دخوله مسبقاً من خلال إرسال طلب مخفي عبر صفحة خارجية ملغومة.

🔒 رموز الحماية ضد التزوير (Anti-CSRF Tokens)

توليد توكن عشوائي غير قابل للتنبؤ مرتبط بجلسة المستخدم والتحقق من وجوده وصحته مع كل طلب POST أو تعديل حساس.

🔒 تقنية Double Submit Cookie و SameSite

مطابقة قيمة التوكن في الكوكي مع قيمة التوكن في جسم الطلب واستخدام `SameSite=Lax/Strict` كإجراء دفاعي إضافي.

💡 نصيحة وأداة المهندس الأمني: توفر أغلب أطر العمل (Django, Laravel, Spring) وسائط أمان (CSRF Middleware) مدمجة يجب تفعيلها دائماً.
⚠️ معايير الأمان والتحذيرات الهندسية:
لا تعتمد أبداً على قيود الواجهة الأمامية (Client-Side) كخط دفاع أمني؛ يجب دائماً التحقق من صحة وتطهير كافة البيانات والتفويض في خادم الويب (Server-Side).

📌 أفضل الممارسات والتوصيات الهندسية:

  • تطبيق مبدأ الصلاحيات الأقل (Principle of Least Privilege) على كافة مستويات التطبيق وقواعد البيانات.
  • ترميز المخرجات المعتمد على السياق واستخدام الاستعلامات المعلمة (Parameterized Queries) لمنع كافة أنواع الحقن.
  • دمج الفحص الأمني التلقائي (SAST & DAST) في خطوط الـ CI/CD لاكتشاف ومعالجة الثغرات مبكراً.