IDOR — доступ к чужому объекту или действию над ним через подмену ссылки при недостаточной авторизации. Сервер должен проверять права текущего пользователя на каждый объект и операцию, включая чтение, изменение, удаление и экспорт. Случайные UUID затрудняют угадывание, но не дают права доступа и не заменяют эти проверки.
Что такое IDOR и как от него защититься?
IDOR возникает из-за отсутствующей проверки доступа к объекту. Почему UUID, скрытые поля и успешный вход не заменяют серверную авторизацию.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
IDOR — Insecure Direct Object Reference — ошибка контроля доступа, при которой пользователь может обратиться к недоступному ему объекту, изменив его идентификатор. Объектом бывает документ, заказ, профиль или файл. Сама передача идентификатора в запросе нормальна; уязвимость возникает, если сервер не проверяет полномочия.
Например, пользователь вправе читать свой заказ, но приложение возвращает ему чужой заказ после изменения идентификатора. Аналогичная ошибка возможна при редактировании, удалении или экспорте, а ссылка может находиться не только в URL, но и в теле запроса.
Основная защита — серверная авторизация каждого объекта и действия:
- определять пользователя по проверенной сессии или токену, не доверяя присланному идентификатору владельца;
- учитывать принадлежность организации, роль и конкретную операцию;
- по возможности искать объект сразу среди доступных пользователю данных;
- применять общие политики доступа последовательно во всех обработчиках;
- запрещать операцию, если разрешение не установлено.
Эти принципы раскрывает OWASP Authorization Cheat Sheet.
Случайный UUID снижает предсказуемость ссылки, но она может стать известна другим способом. Знание UUID не должно предоставлять доступ. Проверки в интерфейсе, скрытые поля и сам факт аутентификации также недостаточны; см. руководство OWASP по IDOR.
На разрешённом тестовом стенде проверяют матрицу пользователей, организаций и операций: законный доступ должен работать, а обращение к чужим объектам — отклоняться без раскрытия данных. Такие проверки полезно закрепить регрессионными тестами.