انتقل إلى محتوى الدرس
الدرس 24
دورة إطار العمل Laravel

معالجة نماذج HTML والحماية من CSRF ومحاكاة الطرق في LaravelHTML Forms CSRF Protection and Method Spoofing in Laravel

تأمين نماذج HTML ضد هجمات تزوير الطلبات عبر توجيه @csrf ومحاكاة طرق التحديث والحذف عبر توجيه @method وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

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

  • آلية استغلال الكوكيز (CSRF Attack): ترسل المتصفحات كوكيز الجلسة تلقائياً، مما يسمح للمواقع الخبيثة بتمرير طلبات مخادعة لولا وجود الرمز السري.
  • الرمز السري للجلسة (Session Token): ينشئ Laravel رمزاً مشفراً خاصاً بجلسة المستخدم لا يمكن لأي موقع خارجي قراءته.
  • الفحص التلقائي بالخادم (ValidateCsrfToken): تفحص البرمجية الوسيطة المدمجة جميع طلبات التعديل والحذف الواردة لمسارات الويب.
مخطط معماري يوضح معالجة نماذج HTML والحماية من CSRF ومحاكاة الطرق في Laravel في إطار العمل Laravel 12
PHP
<?php
// Read the active session's CSRF token in PHP:
$token = csrf_token();

// Or via the incoming Request instance:
$token = $request->session()->token();

عند إنشاء أي نموذج HTML بطريقة إرسال POST داخل قوالب Blade، يجب وضع توجيه @csrf مباشرة بعد وسم فتح النموذج. وإذا أُرسل النموذج بدون هذا الرمز السري أو بعد انتهاء صلاحية جلسة المستخدم، يرفض Laravel الطلب فوراً ويعرض صفحة الخطأ 419 Page Expired.

  • توليد الحقل المخفي (@csrf Directive): يُترجم التوجيه إلى حقل إدخال مخفي يحمل الاسم _token وقيمة الرمز السري.
  • الربط بالمسار المسمى (Form Action): يوضع التوجيه داخل النموذج المربوط بدالة route وطريقة الإرسال POST.
  • معنى خطأ 419 (419 Page Expired): يظهر هذا الكود عند نسيان إضافة توجيه @csrf أو انتهاء وقت الجلسة.
PHP
<form method="POST" action="{{ route('posts.store') }}">
    @csrf

    <input type="text" name="title" placeholder="Title">
    <button type="submit">Publish</button>
</form>

لا تدعم وسوم النماذج القياسية في لغة HTML سوى طريقتي GET وPOST فقط، بينما تتطلب مسارات الموارد القياسية طرق PUT وPATCH وDELETE. يعالج توجيه @method هذه المشكلة بإدراج حقل مخفي باسم _method يخبر موجه Laravel بالطريقة الفعلية المطلوبة.

  • بقاء سمة النموذج POST (method="POST"): يظل وسم النموذج الخارجي على طريقة POST دائماً عند استخدام المحاكاة.
  • محاكاة التحديث (@method('PUT')): يوجه النموذج نحو مسار التحديث Route::put أو Route::patch.
  • محاكاة الحذف (@method('DELETE')): يوجه نموذج تأكيد الحذف نحو مسار Route::delete بأمان.
PHP
<form method="POST" action="{{ route('post.put', 5) }}">
    @csrf
    @method('PUT')

    <input type="text" name="title" value="Guide">
    <button type="submit">Update Article</button>
</form>

عند إرسال طلبات غير متزامنة عبر Fetch API بدلاً من نماذج HTML، يمكنك وضع قيمة csrf_token داخل وسم meta في رأس القالب وإرسالها ضمن رأس الطلب X-CSRF-TOKEN. كما تقوم مكتبة Axios تلقائياً بقراءة كوكي XSRF-TOKEN وإرساله في رأس X-XSRF-TOKEN دون إعداد يدوي.

  • تخزين الرمز في وسم meta (csrf-token Meta): يوضع في رأس التخطيط الرئيسي لتسهيل قراءته من كود JavaScript.
  • رأس الطلب (X-CSRF-TOKEN): تقبل برمجية التحقق في Laravel الرمز السري الممرر في هذا الرأس تماماً كالحقل المخفي.
  • التكامل التلقائي مع Axios (X-XSRF-TOKEN): يرسل Laravel كوكي خاصاً تقرأه مكتبة Axios وترفقه مع كل طلب تلقائياً.
PHP
<meta name="csrf-token" content="{{ csrf_token() }}">
<script>
const token = document.head.dataset.csrfToken;
fetch('/cart/items', {
    method: 'POST',
    headers: { 'X-CSRF-TOKEN': token }
});
</script>

ترسل بوابات الدفع والخدمات الخارجية إشعارات Webhooks مباشرة من خوادمها بطريقة POST، ولذلك لا تمتلك جلسة متصفح أو رمز CSRF. في Laravel 11 و12، يمكنك استثناء مسارات Webhooks المحددة فقط عبر دالة validateCsrfTokens داخل ملف bootstrap/app.php.

  • الإعداد في ملف التهيئة (validateCsrfTokens): تُحدد المسارات المستثناة داخل دالة withMiddleware في ملف bootstrap/app.php.
  • تحديد المسارات بدقة (Narrow Wildcards): قصر الاستثناء على مسارات الإشعارات الخارجية فقط مثل webhooks/*.
  • التحقق بالتوقيع الرقمي (HMAC Signature): اعتمد فحص التوقيع المشفر الخاص بمزود الخدمة لتأمين مسارات Webhooks.
PHP
<?php
// In bootstrap/app.php:
->withMiddleware(function (Middleware $middleware) {
    $middleware->validateCsrfTokens(except: [
        'webhooks/stripe',
        'webhooks/tap/*',
    ]);
})

يضمن الجمع بين توجيهي @csrf و@method في نماذج HTML حماية مسارات تطبيقك من تزوير الطلبات مع دعم كامل لطرق التوجيه القياسية. راجع الجدول الملخص التالي لتثبيت قواعد تأمين النماذج ومحاكاة الطرق.

وجه المقارنة الهندسيالأسلوب اليدوي أو غير المحميمعيار Laravel 12 الحديث
حماية النماذج من التزويرترك نماذج POST بدون رمز سري مما يعرضها لهجمات المواقع الخارجيةفحص تلقائي للرمز السري بمجرد إضافة توجيه @csrf للنموذج
مسارات التحديث والحذفاستخدام روابط GET عادية لحذف السجلات مما يعرضها للتنفيذ العشوائينموذج POST محمي بتوجيه @csrf مع محاكاة الطريقة عبر @method
طلبات AJAX غير المتزامنةتعطيل حماية CSRF بالكامل عند مواجهة خطأ 419 في طلبات Fetchإرسال الرمز بأمان ضمن رأس الطلب X-CSRF-TOKEN أو عبر مكتبة Axios
استثناء مسارات Webhooksتعديل ملفات النظام الأساسية لتجاوز الفحصاستثناء مسارات الإشعارات الخارجية بدقة عبر validateCsrfTokens
PHP
<form method="POST" action="{{ route('post.rm', 5) }}">
    @csrf
    @method('DELETE')
    <button type="submit">Delete Article</button>
</form>
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس حول «معالجة نماذج HTML والحماية من CSRF ومحاكاة الطرق في Laravel» مفاهيم فهم هجمات تزوير الطلبات CSRF، وتأمين نماذج HTML بتوجيه csrf، ومحاكاة طرق التحديث والحذف بالنماذج وفق معايير Laravel 12 الحديثة.

الخطوة التالية والدرس القادم

انتقل الآن إلى الدرس التالي «التحقق من مدخلات النماذج وعرض الأخطاء وحفظ القيم القديمة» للبناء التراكمي على ما تعلمته.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 CSRF Protection حماية النماذج
تأمين نماذج HTML ضد هجمات تزوير الطلبات عبر توجيه @csrf ومحاكاة طرق التحديث والحذف عبر توجيه @method وفق أحدث معايير إطار العمل Laravel 12 مع أمثلة وتطبيقات عملية متدرجة.
للمراجعة
02 Cross Site Request Forgery Explained فهم هجمات تزوير الطلبات CSRF
المفهوم الهندسي والتطبيق العملي المباشر لقسم فهم هجمات تزوير الطلبات CSRF في إطار العمل Laravel 12.
للمراجعة
03 Securing Forms with CSRF Directive تأمين نماذج HTML بتوجيه csrf
المفهوم الهندسي والتطبيق العملي المباشر لقسم تأمين نماذج HTML بتوجيه csrf في إطار العمل Laravel 12.
للمراجعة
04 HTML Form Method Spoofing Directive محاكاة طرق التحديث والحذف بالنماذج
المفهوم الهندسي والتطبيق العملي المباشر لقسم محاكاة طرق التحديث والحذف بالنماذج في إطار العمل Laravel 12.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 MVC MVC
Model View Controller
النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
للمراجعة
02 CLI CLI
Command Line Interface
واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
للمراجعة
03 HTTP HTTP
Hypertext Transfer Protocol
بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
للمراجعة
04 PSR PSR
PHP Standards Recommendations
المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «فهم هجمات تزوير الطلبات CSRF» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «تأمين نماذج HTML بتوجيه csrf» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من فهم هجمات تزوير الطلبات CSRF في إطار العمل Laravel 12؟

يسهم فهم هجمات تزوير الطلبات CSRF في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «تأمين نماذج HTML بتوجيه csrf» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة محاكاة طرق التحديث والحذف بالنماذج بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة محاكاة طرق التحديث والحذف بالنماذج.

04

لماذا يُعد تطبيق إرسال رمز الحماية بطلبات AJAX مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق استثناء مسارات Webhooks من الفحص في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في مرجع حماية النماذج ومحاكاة الطرق؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.