Выбор ответа Junior Аутентификация и права спрашивают часто обновлено

Что такое IDOR

Вопрос

Эндпоинт GET /api/invoices/{id} проверяет только, что пользователь вошёл, и отдаёт счёт по id. В чём уязвимость?

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

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

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

Коротко

Правильный ответ: IDOR: перебирая id, читают чужие счета; нужна проверка владельца. Аутентификация не равна авторизации: вошедший пользователь не должен видеть чужие объекты.

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

  1. IDOR: перебирая id, читают чужие счета; нужна проверка владельцаправильный ответ
  2. SQL-инъекция через параметр id, если он подставляется в запрос
  3. CSRF: чужой сайт заставит браузер пользователя запросить счёт
  4. Уязвимости нет: пользователь аутентифицирован, значит, ему можно

Разбор

Аутентификация не равна авторизации: вошедший пользователь не должен видеть чужие объекты. Это Insecure Direct Object Reference, частный случай нарушения контроля доступа. Лечится фильтрацией по владельцу в каждом запросе к объекту (get_queryset, where(owner_id == user.id)), UUID вместо последовательных id лишь усложняет перебор, но не заменяет проверку. Целочисленный параметр пути не даёт SQL-инъекции, а CSRF касается действий от имени пользователя через его браузер.

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

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

Термины по теме