نقطة
  • الرئيسية
  • الخدمات
  • من نحن
  • الكتابات
  • تسجيل الدخول
الكتابات/tutorial/2024/06
● Tutorial14 يونيو 2024·8 دقيقة

4 أساسيات Laravel 11: حماية CSRF

مقال تعليمي حول أساسيات Laravel 11.

Noqta Team
Noqta Team
Author
·EN · FR · AR

التزوير عبر المواقع (CSRF) هو نوع من الاستغلال الضار حيث يتم تنفيذ أوامر غير مصرح بها نيابة عن مستخدم مصدق. يجعل Laravel من السهل حماية تطبيقك من هجمات CSRF.

مقدمة عن حماية CSRF

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

منع طلبات CSRF

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

يمكنك الوصول إلى رمز CSRF للجلسة الحالية عبر جلسة الطلب أو وظيفة المساعد csrf_token:

use Illuminate\Http\Request;
 
Route::get('/token', function (Request $request) {
    $token = $request->session()->token();
    $token = csrf_token();
    // ...
});

في أي وقت تقوم فيه بتعريف نموذج HTML لـ "POST" أو "PUT" أو "PATCH" أو "DELETE" في تطبيقك، يجب عليك تضمين حقل CSRF _token المخفي في النموذج حتى يتمكن middleware حماية CSRF من التحقق من الطلب. لراحتك، يمكنك استخدام توجيه Blade @csrf لتوليد حقل الرمز المخفي:

<form method="POST" action="/profile">
    @csrf
    <!-- حقول النموذج -->
</form>

سيقوم middleware ValidateCsrfToken، المضمن في مجموعة middleware web افتراضيًا، بالتحقق تلقائيًا من أن الرمز في إدخال الطلب يتطابق مع الرمز المخزن في الجلسة.

رموز CSRF وتطبيقات SPA

إذا كنت تبني تطبيق SPA يستخدم Laravel كخلفية API، فاستشر وثائق Laravel Sanctum للحصول على معلومات حول المصادقة مع API الخاص بك وحماية ضد نقاط الضعف في CSRF.

استثناء URIs من حماية CSRF

في بعض الأحيان قد ترغب في استثناء URIs معينة من حماية CSRF. على سبيل المثال، إذا كنت تستخدم Stripe لمعالجة المدفوعات وتستخدم نظام الويب هوك الخاص بهم، فستحتاج إلى استثناء مسار معالج ويب هوك Stripe من حماية CSRF. يمكنك القيام بذلك عن طريق توفير URIs لطريقة validateCsrfTokens في ملف bootstrap/app.php لتطبيقك:

->withMiddleware(function (Middleware $middleware) {
    $middleware->validateCsrfTokens(except: [
        'stripe/*',
        'http://example.com/foo/bar',
        'http://example.com/foo/*',
    ]);
});

X-CSRF-TOKEN

بالإضافة إلى التحقق من رمز CSRF كمعامل POST، سيقوم middleware ValidateCsrfToken أيضًا بالتحقق من عنوان الطلب X-CSRF-TOKEN. يمكنك، على سبيل المثال، تخزين الرمز في علامة HTML meta:

<meta name="csrf-token" content="{{ csrf_token() }}">

ثم يمكنك إرشاد مكتبة مثل jQuery لإضافة الرمز تلقائيًا إلى جميع عناوين الطلبات. يوفر هذا حماية بسيطة ومريحة لـ CSRF لتطبيقات AJAX الخاصة بك باستخدام تقنية JavaScript القديمة:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

X-XSRF-TOKEN

يخزن Laravel رمز CSRF الحالي في ملف تعريف ارتباط مشفر XSRF-TOKEN يتم تضمينه مع كل استجابة يتم إنشاؤها بواسطة الإطار. يمكنك استخدام قيمة ملف تعريف الارتباط لتعيين عنوان الطلب X-XSRF-TOKEN. يتم إرسال هذا ملف تعريف الارتباط بشكل أساسي كراحة للمطور نظرًا لأن بعض أطر عمل JavaScript والمكتبات، مثل Angular و Axios، تضع قيمته تلقائيًا في عنوان X-XSRF-TOKEN في الطلبات ذات الأصل نفسه.

تعرف على المزيد حول حماية CSRF من التوثيق الرسمي لـ Laravel.

خاتمة

حماية CSRF أمر أساسي لتأمين تطبيقات الويب. غطى هذا البرنامج التعليمي كيفية استخدام رموز CSRF في Laravel 11 لحماية تطبيقك من هجمات CSRF. لمزيد من المعلومات التفصيلية، راجع التوثيق الرسمي لـ Laravel.

تمنياتنا ببرمجة سعيدة مع Laravel 11!

● الوسوم
#Laravel 11#حماية CSRF#تطوير الويب#برنامج تعليمي#Beginner#8 دقيقة قراءة
● مشاركة
● هل لديك سؤال؟

تحدث مع وكيل نقطة بشأن هذا المقال.

Noqta Team
Noqta Team
Author · noqta
متابعة ↗

● اقرأ التالي

الدليل التفصيلي لتثبيت وهيكلة تطبيقك في Next.js لأداء أمثل
● Tutorial

الدليل التفصيلي لتثبيت وهيكلة تطبيقك في Next.js لأداء أمثل

29 مايو 2024
Astro 5: بناء موقع محتوى فائق السرعة باستخدام هندسة الجُزر
● Tutorial

Astro 5: بناء موقع محتوى فائق السرعة باستخدام هندسة الجُزر

25 فبراير 2026
أتمتة سير العمل مع Zapier وWebhooks في تطبيق Next.js
● Tutorial

أتمتة سير العمل مع Zapier وWebhooks في تطبيق Next.js

19 مايو 2024
نقطة
الشروط والأحكام · سياسة الخصوصية
الخدمات
  • أتمتة الذكاء الاصطناعي
  • وكلاء الذكاء الاصطناعي
  • أتمتة تجربة العملاء
  • Vibe Coding
  • إدارة المشاريع
  • ضمان الجودة
  • تطوير الويب
  • تكامل API
  • تطبيقات الأعمال
  • الصيانة
  • Low-Code/No-Code
الروابط
  • معلومات عنا
  • كيف نعمل؟
  • الأخبار
  • الدروس التعليمية
  • المدونة
  • تواصل معنا
  • الأسئلة الشائعة
  • الموارد
المناطق
  • السعودية
  • الإمارات
  • قطر
  • البحرين
  • عُمان
  • ليبيا
  • تونس
  • الجزائر
  • المغرب
الشركة
  • نقطة، تونس، الهاتف +216 24 309 128
© نقطة. جميع الحقوق محفوظة.