Выбор ответа Middle Сессии и безопасность обновлено
Массовое присваивание
Вопрос
Чем опасен код User::create($request->all()) в Laravel, если в модели $guarded = []?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Пользователь пришлёт лишнее поле, например isadmin=1. Пустой $guarded разрешает заполнять любые атрибуты.
Варианты ответа
- Ничем: Laravel сам отфильтрует опасные поля вроде
is_admin - Запрос упадёт, если полей в запросе больше, чем колонок
- Пользователь пришлёт лишнее поле, например
is_admin=1правильный ответ - Пароль сохранится без хеширования, других проблем нет
Разбор
Пустой $guarded разрешает заполнять любые атрибуты. Атакующему достаточно добавить поле в форму. Защита: явный $fillable, $request->validated() или $request->only([...]), DTO. Laravel не знает, какие поля опасны. Лишние поля без колонок действительно дадут ошибку SQL, но реальные колонки вроде is_admin запишутся.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.