Кнопка удаления скрыта от наблюдателя, но это еще не означает, что сервер запрещает удаление прямым запросом. Проверка доступа должна охватывать операцию, пользователя и принадлежность объекта. Особенно легко пропустить доступ между организациями при корректной проверке роли внутри одной организации.
Что подготовить
- Роли, операции и правила принадлежности объектов пользователям или организациям.
- Тестовые учетные записи минимум двух независимых организаций и объекты с известными владельцами.
- Описание публичных ресурсов, административных исключений и поведения при отсутствии сессии.
Порядок работы
- Составьте таблицу разрешенных и запрещенных сочетаний роли, операции и объекта. Отдельно отметьте неуточненные правила.
- Для каждого разрешения создайте соседний запрет: чужой объект, неподходящая роль, отозванное членство или отсутствующая сессия.
- Проверяйте сервер напрямую в разрешенной тестовой среде. Наличие или отсутствие кнопки проверяйте отдельно как поведение интерфейса.
- Добавьте вложенные ресурсы, массовые операции, выгрузки и фоновые задания. Права на родительский объект не должны теряться на другом маршруте.
- Сверьте ответы и фактическое состояние базы: запрещенный запрос не должен успеть изменить данные до возврата ошибки.
Разобранный пример
Редактор организации А может обновить документ А, но не документ Б. В тесте используется существующий идентификатор документа Б и тот же запрос обновления. Ожидаются отказ и неизменность документа Б. Замена на несуществующий идентификатор не проверяет межорганизационную изоляцию.
Как проверить результат
- Запрещены чтение и изменение объектов другой организации во всех проверенных маршрутах.
- Отзыв прав вступает в силу согласно установленной политике сессий и кеша.
- Журналы фиксируют отказ без раскрытия содержимого закрытого объекта.
Если что-то пошло не так
При обнаружении обхода сначала ограничьте затронутый путь штатным механизмом и сохраните воспроизведение. Исправляйте общий слой проверки там, где это соответствует архитектуре, затем повторяйте матрицу, включая законные разрешения.
Промпт для разбора ваших материалов
По правилам доступа составь матрицу ролей, операций и владельцев объектов. Для каждой разрешенной операции предложи отрицательные проверки. Укажи ожидаемый ответ и проверку отсутствия побочного эффекта. Работай только с описанной тестовой средой.Частые вопросы
Достаточно ли проверить роль администратора?
Нет. Большинство ошибок проявляется на границах обычных ролей и между владельцами объектов.
Нужно ли различать отсутствие объекта и запрет?
Это определяется политикой раскрытия информации. Проверяйте согласованность ответа, не навязывая универсальный код ошибки.
Материал библиотеки решений Ильи Тарасова / TarasovWeb.
Какие оси включить в матрицу
Одной таблицы ролей недостаточно, если доступ зависит от принадлежности объекта организации или конкретному пользователю. Добавьте оси «владелец объекта», «другая команда», «другая организация» и «объект в закрытом состоянии», когда они применимы. Проверка одной кнопки в интерфейсе не подтверждает защиту серверного маршрута.
В учебном случае редактор может менять свою статью, читать опубликованные чужие статьи и не должен видеть закрытый черновик другой организации. Проверьте чтение, обновление и скачивание вложения отдельно. Разрешение на чтение самой статьи не автоматически означает право на все связанные файлы.
Для каждого запрещённого действия заранее определите ожидаемый результат и отсутствие побочного эффекта. После отказа проверьте, что запись не изменилась, задача не попала в очередь и уведомление не отправилось. Используйте тестовые учётные записи и объекты с понятной принадлежностью, чтобы отказ из-за отсутствия объекта не скрывал отсутствие проверки прав.
Рекомендации OWASP по авторизации подчёркивают необходимость проверять разрешения при обращениях к защищённым ресурсам. При изменении роли повторите сценарии в новой сессии и проверьте правила актуализации доступа. Зафиксируйте, какие результаты обусловлены политикой приложения, а какие — технической ошибкой тестовой среды. Полная матрица должна содержать разрешённые действия тоже: чрезмерный запрет способен сломать рабочий процесс.
О проекте
Практическая библиотека Ильи Тарасова и TarasovWeb. Telegram-канал · Личная страница · ВКонтакте.
#tarasovweb #ИльяТарасов
