Выбор ответа Middle Авторизация: IDOR, RBAC, ABAC обновлено
Надёжная проверка владельца
Вопрос
Какой способ проверки доступа к заказу надёжнее всего?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Условие в запросе: WHERE id = $1 AND customerid = $2, нет строки, вернуть 404. Условие в запросе не даёт забыть проверку и не загружает чужие данные в память.
Варианты ответа
- Загрузить заказ и скрыть кнопки в интерфейсе, если владелец не совпадает с текущим пользователем
- Проверять, что id заказа есть в списке, который сервер отдал пользователю в этой сессии
- Условие в запросе:
WHERE id = $1 AND customer_id = $2, нет строки, вернуть 404правильный ответ - Проверять владельца при удалении и изменении, а чтение оставить открытым для скорости
Разбор
Условие в запросе не даёт забыть проверку и не загружает чужие данные в память. Интерфейс не защита: запрос можно отправить напрямую. «Видел ранее» хрупко и не связано с правами. Проверка нужна на каждую операцию: чтение, изменение, удаление.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.