انتقل إلى محتوى الدرس

Understanding Mass Assignment Security مفهوم ثغرة الإسناد الجماعي وخطورتها

حفظ وتحديث نماذج Eloquent عبر save و create وتأمين الأعمدة الحساسة ضد ثغرة الإسناد الجماعي باستخدام $fillable.
1 صفوف تعليمية
إطار العمل Laravel
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

يحدث الإسناد الجماعي عند تمرير مصفوفة من المفاتيح والقيم دفعة واحدة إلى دالتي create أو update لحفظ عدة أعمدة في خطوة واحدة. وبدون حماية مدمجة، قد يحقن مهاجم حقلاً إضافياً مثل صلاحية المدير is_admin=1 في طلب النموذج لترقية حسابه بشكل غير مشروع.

  • ثغرة الإسناد الجماعي (Mass Assignment): تلاعب المهاجم بحقول النموذج لإرسال أسماء أعمدة حساسة كالصلاحيات والرصيد.
  • الدرع الافتراضي: يمنع Eloquent الإسناد الجماعي لجميع الأعمدة افتراضياً حتى تحدد قائمة السماح بنفسك.
  • استثناء الحماية (MassAssignmentException): يُطلق فوراً عند محاولة استخدام create دون تعريف قائمة الحقول المسموحة.
PHP
// Unsafe if $request->all() has 'is_admin' => 1
// Always pair FormRequest and Model $fillable!
$clean = $request->validate([
    'name'   => ['required', 'string', 'max:80'],
    'number' => ['required', 'string', 'max:20'],
]);