شرح صفوف ومحتوى الفقرة
يحدث الإسناد الجماعي عند تمرير مصفوفة من المفاتيح والقيم دفعة واحدة إلى دالتي 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'],
]);