Выбор ответа Junior Авторизация: IDOR, RBAC, ABAC спрашивают часто обновлено
Mass assignment
Вопрос
Обработчик делает User.update(req.user.id, req.body). Чем это опасно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Пользователь пришлёт поля, которые менять нельзя: role, isverified, balance. Владелец проверен, но не набор полей.
Варианты ответа
- Ничем: id берётся из сессии, поэтому пользователь меняет только свою запись
- Пользователь пришлёт поля, которые менять нельзя:
role,is_verified,balanceправильный ответ - Тем, что ORM сделает UPDATE всех колонок, и запрос будет заметно медленнее
- Тем, что значения из body попадут в SQL без экранирования, это прямая инъекция
Разбор
Владелец проверен, но не набор полей. Это нарушение авторизации на уровне свойств объекта. Защита: DTO или схема с явным списком изменяемых полей. ORM обычно параметризует значения, так что инъекция тут не главная проблема.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.