Выбор ответа Junior Авторизация: IDOR, RBAC, ABAC спрашивают часто обновлено

Mass assignment

Вопрос

Обработчик делает User.update(req.user.id, req.body). Чем это опасно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Пользователь пришлёт поля, которые менять нельзя: role, isverified, balance. Владелец проверен, но не набор полей.

Варианты ответа

  1. Ничем: id берётся из сессии, поэтому пользователь меняет только свою запись
  2. Пользователь пришлёт поля, которые менять нельзя: role, is_verified, balanceправильный ответ
  3. Тем, что ORM сделает UPDATE всех колонок, и запрос будет заметно медленнее
  4. Тем, что значения из body попадут в SQL без экранирования, это прямая инъекция

Разбор

Владелец проверен, но не набор полей. Это нарушение авторизации на уровне свойств объекта. Защита: DTO или схема с явным списком изменяемых полей. ORM обычно параметризует значения, так что инъекция тут не главная проблема.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.