0Pricing
React Academy · درس

الحماية من CSRF في React وإعدادات API

نفّذ ملفات تعريف الارتباط SameSite ورموز CSRF وأنماط ملفات تعريف الارتباط ذات الإرسال المزدوج في إعدادات React SPA وSSR

الحماية من CSRF في React وإعدادات API درس مجاني في React Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.

ما هو CSRF

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

لماذا تتيح ملفات تعريف الارتباط هجمات CSRF

تُعدّ ملفات تعريف الارتباط السبب الجذري لثغرة CSRF. فعندما يسجّل المستخدم الدخول إلى تطبيقكم، يُخزّن ملف جلسة تعريف الارتباط الخاص به في المتصفح. وعند زيارة صفحة المهاجم، يستطيع المهاجم تشغيل إرسال نموذج أو طلب fetch إلى واجهة API الخاصة بكم، فيُدرج المتصفح ملف جلسة تعريف الارتباط تلقائيًا، وبذلك يصادق على الطلب الخبيث.

السمة SameSite لملف تعريف الارتباط

تُخبر سمة SameSite في ملف تعريف الارتباط المتصفحات بموعد تضمين ملفات تعريف الارتباط في الطلبات بين المواقع. ولها ثلاث قيم: Lax (القيمة الافتراضية في المتصفحات الحديثة — تحظر POST بين المواقع وتسمح بـ GET)، وStrict (تحظر جميع الطلبات بين المواقع، بما في ذلك عمليات التنقل عبر GET)، وNone (تسمح بالطلبات بين المواقع، وتتطلب علامة Secure مع HTTPS).

SameSite=Lax وواجهات API الآمنة

تحظر SameSite=Lax طلبات POST وPUT وDELETE وPATCH بين المواقع — وهي الأساليب المستخدمة للتعديلات. إذا كانت واجهة API الخاصة بكم تستخدم GET للقراءة فقط وPOST لجميع التعديلات، فإن SameSite=Lax تمنع CSRF بفعالية في تطبيقات SPA ضمن المتصفحات الحديثة. وهذا هو الإجراء الأساسي للتخفيف الذي تعتمد عليه معظم التطبيقات اليوم.

نمط ملف تعريف الارتباط ذي الإرسال المزدوج

نمط ملف تعريف الارتباط ذي الإرسال المزدوج هو إجراء للتخفيف من CSRF، يضع فيه الخادم رمز CSRF عشوائيًا في ملف تعريف ارتباط غير مميز بـ HttpOnly. يقرأ العميل قيمة ملف تعريف الارتباط هذه ويضمّنها في ترويسة طلب مخصصة، مثل X-CSRF-Token. ويتحقق الخادم من تطابق قيمة الترويسة مع قيمة ملف تعريف الارتباط. ولا يستطيع المهاجم قراءة ملف تعريف الارتباط من مصدر مختلف، لذلك لا يمكنه ضبط الترويسة الصحيحة.

نمط رمز المزامنة

ينشئ نمط رمز المزامنة رمز CSRF فريدًا لكل جلسة مستخدم على الخادم. وبالنسبة إلى نماذج HTML، يُضمَّن الرمز في حقل مخفي. أما بالنسبة إلى استدعاءات SPA لـ API، فيُوفَّر الرمز عبر نقطة نهاية أو وسم meta، ويُرسل في ترويسة مخصصة. ويتحقق الخادم من الرمز في كل طلب يغيّر الحالة.

JWT في ترويسة Authorization: غير معرّض للخطر

لا تكون React SPA التي تخزّن JWT في الذاكرة أو في localStorage وترسله في ترويسة Authorization: Bearer عرضةً لـ CSRF التقليدي. تستغل هجمات CSRF المصادقة المعتمدة على ملفات تعريف الارتباط — إذ لا يمكن لصفحة المهاجم ضبط ترويسات مخصصة في الطلبات بين المصادر بسبب قيود CORS، ولذلك لا يمكنها تزوير ترويسة Authorization.

ترويسات الطلب المخصصة كإجراء للتخفيف من CSRF

لا تسمح الطلبات البسيطة بين المصادر، مثل POST عبر نموذج أو تحميل صورة، بالترويسات المخصصة. ولا يمكن أن تتضمن الترويسات المخصصة إلا الطلبات التي تمر بعملية الفحص المسبق لـ CORS — وتتطلب الطلبات التي تخضع للفحص المسبق إذنًا صريحًا من الخادم. وتكون واجهة API التي تتطلب ترويسة مخصصة، مثل X-Requested-With: XMLHttpRequest، لجميع التعديلات محمية بطبيعتها من هجمات CSRF البسيطة.

يختلف CORS عن CSRF

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

أفضل ممارسات ملفات تعريف ارتباط الجلسة

اضبط ملفات تعريف ارتباط الجلسة باستخدام: HttpOnly: true (يمنع JavaScript من قراءة ملف تعريف الارتباط، مما يوقف سرقة الرموز المستندة إلى XSS)، وSecure: true (لا يُرسل إلا عبر HTTPS)، وSameSite: Lax أو Strict (يمنع CSRF)، وقيمة مناسبة لـ Max-Age أو تاريخ انتهاء مناسب. تعمل هذه السمات الأربع معًا على تعزيز إدارة الجلسات بدرجة كبيرة.

CSRF في Next.js App Router

يستخدم Next.js App Router إجراءات الخادم، وهي طلبات POST. يطبّق Next.js حماية من CSRF من خلال التحقق من ترويسة Origin ومقارنتها بالمضيف؛ إذ تُرفض الطلبات الواردة من أصول غير متوقعة. ويوفر هذا التحقق المضمّن، إلى جانب ملفات تعريف ارتباط الجلسة ذات SameSite=Lax، حماية قوية من CSRF لعمليات التغيير المستندة إلى إجراءات الخادم.

سمة SameSite لملف تعريف الارتباط

ما قيمة ملف تعريف الارتباط SameSite التي تمنع طلبات POST من مواقع مختلفة، لكنها تسمح بعمليات التنقل عبر GET من مواقع مختلفة؟

مراجعة الدرس

تستغل CSRF المصادقة المستندة إلى ملفات تعريف الارتباط بخداع المتصفح لإرسال طلبات موثّقة من مواقع مختلفة. تُعد SameSite=Lax خط الدفاع الأساسي في المتصفحات الحديثة. ويوفر نمطا Double Submit Cookie وSynchronizer Token حماية إضافية. تكون تطبيقات React أحادية الصفحة التي تستخدم JWT في ترويسات Authorization محصّنة بطبيعتها ضد CSRF. كما تخفف الترويسات المخصّصة المطلوبة وتهيئة CORS المسبقة من CSRF. احرص دائمًا على الجمع بين HttpOnly + Secure + SameSite في ملفات تعريف ارتباط الجلسة.

الأسئلة الشائعة

هل درس «الحماية من CSRF في React وإعدادات API» مجاني؟

نعم — نص درس «الحماية من CSRF في React وإعدادات API» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.

ماذا ستتعلم في «الحماية من CSRF في React وإعدادات API»؟

نفّذ ملفات تعريف الارتباط SameSite ورموز CSRF وأنماط ملفات تعريف الارتباط ذات الإرسال المزدوج في إعدادات React SPA وSSR تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟

لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الحماية من CSRF في React وإعدادات API»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟

نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. هجمات XSS في React: dangerouslySetInnerHTML والبرامج النصية التابعة لجهات خارجية
  2. الحماية من CSRF في React وإعدادات API
  3. سياسة أمان المحتوى لتطبيقات React
  4. إدارة الأسرار ومتغيرات البيئة
← العودة إلى React Academy