ما هو CSRF؟ وكيف يمكننا منع CSRF؟

January 23, 2024

Technology

في العصر الرقمي، أصبح الإنترنت جزءًا لا يتجزأ من حياتنا اليومية. لقد قمنا بنقل العديد من الأنشطة إلى الإنترنت، من التسوق إلى التواصل على منصات مختلفة وإجراء المعاملات المصرفية. ومع انتشار التفاعلات المالية، أصبحت تداعيات أمان الشبكة أكثر وضوحًا. أحد أكثر التهديدات الإلكترونية شيوعًا على الإنترنت هو CSRF (تزوير الطلبات عبر المواقع)، ومن الضروري التعمق في تفاصيله.

ما هو CSRF؟

تستغل هجمات CSRF الثغرات في آليات التحقق من الطلبات في موقع الويب المستهدف. في بعض الحالات، يقوم المستخدمون بتنفيذ طلبات ضارة دون قصد أثناء تسجيل الدخول إلى الموقع المستهدف. عادةً ما يستخدم المهاجمون عناوين تشبه نطاق الموقع المستهدف، لجذب المستخدمين للنقر. يقومون بتضمين كود ضار عن طريق تمويهه كتحميل صور أو نماذج مخفية، مما يؤدي إلى بدء طلبات إلى الموقع المستهدف وتنفيذ إجراءات غير مصرح بها. يمكن أن تؤدي أهداف مثل تغيير كلمات مرور المستخدمين أو بدء تحويلات بنكية غير مصرح بها إلى خسائر كبيرة للمستخدمين.

مثال من الحياة الواقعية

تخيل موقعًا إلكترونيًا باسم e-bank.com يقدم خدمات مصرفية إلكترونية، ويحتوي على صفحة باسم /transfer لتقديم طلبات التحويل. عندما يصل المستخدمون إلى صفحة e-bank.com/transfer، يتم عرض نموذج يعرض التفاصيل التي أدخلها المستخدم. عند اكتمال النموذج وإرساله، يتم إرسال طلب HTTP POST إلى عنوان الصفحة، مع حمل معلمات مثل المستلم والمبلغ الذي أدخله المستخدم.

في هذه المرحلة، يمكن للمهاجم إنشاء صفحة ضارة تحتوي على نموذج غير مرئي، مع توجيه عنوان الإرسال إلى e-bank.com/transfer. يقوم المهاجم بملء النموذج مسبقًا بمعلمات المستلم والمبلغ المحددة. عندما يتم خداع المستخدمين للنقر على هذه الصفحة الضارة، يقوم المتصفح بتنفيذ كود JavaScript، مما يؤدي إلى إرسال النموذج.

إذا لم يكن المستخدم مسجلًا أو مسجل الدخول على e-bank.com، لا يمكن تنفيذ طلب التحويل. ومع ذلك، إذا كان المستخدم قد استخدم الخدمة مؤخرًا واستمرت حالة تسجيل الدخول، فقد يتم تنفيذ طلب التحويل بنجاح.

هذا يلخص هجمات CSRF - بسيطة في المبدأ ولكنها تحمل ضررًا كبيرًا. لحسن الحظ، هناك العديد من الطرق الناضجة لمنع مثل هذه الهجمات. دعونا نستكشفها أدناه.

كيف يمكننا منع CSRF؟

يتطلب معالجة هذه المشكلة اتخاذ إجراءات استباقية وسلبية.

تقييد طريقة HTTP وتقييد المرجع

كمطورين، يمكننا فرض قيود أكثر صرامة على العناوين الحساسة داخل الخدمة، مثل:

  • بالنسبة للعناوين التي تتطلب تقديم بيانات، حظر استخدام طلبات HTTP GET، مما يجبر استخدام طلبات POST. هذا يزيد من تعقيد محاولات المهاجمين لإنشاء صفحات ضارة.

  • بالإضافة إلى ذلك، يمكننا تقييد حقل المرجع في رأس طلب HTTP (Referer)، والسماح فقط بالعناوين الشرعية المعروفة وحظر الطلبات الضارة.

هذا يمثل إجراء وقائيًا استباقيًا بسيطًا بتكلفة أقل ولكن لا يزال عرضة للهجمات.

رمز CSRF

رمز CSRF هو حل واسع الانتشار، يجمع بين آليات الجلسة على جانب الخادم لمنع هجمات CSRF. على وجه التحديد، يقوم برنامج الخادم بتضمين حقل إدخال مخفي في الصفحات التي تتطلب الحماية مع رمز CSRF تم إنشاؤه عشوائيًا في نموذج الإخراج. في الوقت نفسه، يتم إنشاء جلسة على جانب الخادم، تخزن هذه السلسلة العشوائية مع وقت انتهاء الصلاحية.

عندما يطلب المستخدم الصفحة، يقوم الخادم بتهيئة الجلسة، تخزين البيانات على جانب الخادم وتعيين ملف تعريف الارتباط في متصفح العميل يحتوي على معرف الجلسة للارتباط. يتم تخزين رمز CSRF في الجلسة. عند إرسال النموذج، يتم إرسال رمز CSRF. يقوم برنامج الخادم بمقارنة هذا الرمز مع الجزء المخزن في الجلسة. يؤدي التحقق الناجح إلى تنفيذ المنطق اللاحق؛ وإلا، يتم إرجاع خطأ. في الوقت نفسه، يتم إدراج رمز CSRF جديد في النموذج للإرسال التالي.

هذا يمثل إجراء وقائيًا استباقيًا، يتطلب بعض الجهد ولكنه يوفر حماية قوية.

حماية عبر المصادر

غالبًا ما نواجه تقنية تسمى CORS (مشاركة الموارد عبر المصادر)، وهي مواصفة تشير إلى ما إذا كان المتصفح يسمح بطلبات عبر المصادر. تدعم المتصفحات الحديثة هذه المواصفة. عند بدء طلب Fetch/XHR على صفحة موجودة، يرسل المتصفح طلب HTTP OPTIONS للتحقق المسبق مما إذا كانت الخدمة المستهدفة تسمح بالطلبات من عنوان المصدر الحالي. سيقدم الخادم قائمة برؤوس الاستجابة، مع تحديد المصادر المسموح بها وطرق الطلبات والرؤوس. يلتزم المتصفح بهذه الإشارات، مما يمنع الطلبات المحظورة على جانب العميل.

هذا يمثل إجراء وقائيًا استباقيًا آخر، قابل للتكوين على جانب الخادم، ولكن لاحظ أنه على الرغم من أن المستخدمين العاديين من غير المحتمل أن يقوموا بتعطيل هذه الميزة، إلا أنه لا يزال ممكنًا على جانب العميل.

حظر ملفات تعريف الارتباط من أطراف ثالثة

في بعض الأحيان تقوم الخدمات التي نطورها بتخزين معرفات جلسات المستخدمين في ملفات تعريف الارتباط للحفاظ على حالة تسجيل الدخول. تدعم ملفات تعريف الارتباط إعدادات SameSite، مما يمنع المتصفح من إرسال ملفات تعريف الارتباط إلى مواقع عبر المصادر. محاولة هجمات CSRF تؤدي إلى حالة غير مصادقة على الموقع المستهدف.

علاوة على ذلك، بسبب إساءة استخدام آليات ملفات تعريف الارتباط HTTP لتتبع العملاء، قرر مطورو المتصفحات تقييد وحظر ملفات تعريف الارتباط من أطراف ثالثة (عد تنازلي لملفات تعريف الارتباط) تدريجيًا. عندما تحاول صفحة على النطاق A إجراء مكالمة إلى النطاق B، حتى إذا اجتازت فحوصات قواعد CORS، لن يرسل المتصفح ملفات تعريف الارتباط إلى ذلك الموقع عبر المصادر.

مثال على الجدول الزمني لـ Chrome

ملخص

كبوابات API، يدعم كل من Apache APISIX وAPI7 Enterprise رمز CSRF وCORS - وهما إجراءان وقائيان تم ذكرهما سابقًا - لمنع هجمات CSRF.

في الختام، يتطلب منع هجمات CSRF نهجًا متعدد الأوجه، يتضمن تقنيات مختلفة عبر جانب الخادم والمتصفح وبروتوكول HTTP والمزيد لتحقيق حماية شاملة.

Tags: