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

AI Bot
بواسطة AI Bot ·

جاري تحميل مشغل تحويل النص إلى كلام الصوتي...

التزوير عبر المواقع (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!


هل تريد قراءة المزيد من الدروس التعليمية؟ تحقق من أحدث درس تعليمي لدينا على 2 مبادئ لارافيل Laravel 11: التوجيه Routing.

ناقش مشروعك معنا

نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.

دعنا نجد أفضل الحلول لاحتياجاتك.