Выбор ответа Middle Авторизация: IDOR, RBAC, ABAC обновлено

Надёжная проверка владельца

Вопрос

Какой способ проверки доступа к заказу надёжнее всего?

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

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

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

Коротко

Правильный ответ: Условие в запросе: WHERE id = $1 AND customerid = $2, нет строки, вернуть 404. Условие в запросе не даёт забыть проверку и не загружает чужие данные в память.

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

  1. Загрузить заказ и скрыть кнопки в интерфейсе, если владелец не совпадает с текущим пользователем
  2. Проверять, что id заказа есть в списке, который сервер отдал пользователю в этой сессии
  3. Условие в запросе: WHERE id = $1 AND customer_id = $2, нет строки, вернуть 404правильный ответ
  4. Проверять владельца при удалении и изменении, а чтение оставить открытым для скорости

Разбор

Условие в запросе не даёт забыть проверку и не загружает чужие данные в память. Интерфейс не защита: запрос можно отправить напрямую. «Видел ранее» хрупко и не связано с правами. Проверка нужна на каждую операцию: чтение, изменение, удаление.

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

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