Краткий ответ
Проверку доступа строят по матрице пользователей, объектов и действий, включая запрещённые сценарии. Используют только разрешённый тестовый контур и синтетические данные; скрытая кнопка и успешная авторизация не доказывают изоляцию.
Согласуйте границы проверки
Определите принадлежащий проекту контур, тестовые аккаунты и допустимые действия. Проверка собственной системы не требует обращения к чужим данным или сервисам. Подготовьте синтетические организации, документы и роли, чтобы ошибку можно было обнаружить без раскрытия реальной информации. Результаты должны быть воспроизводимыми для разработчика.
Начните с ожидаемого доступа. Для каждой роли укажите, какие записи она видит и какие действия выполняет. Без этой матрицы нельзя отличить дефект от разрешённого поведения. Особое внимание уделите пользователю нескольких организаций, временному полномочию и смене владельца объекта.
Проверьте поверхность доступа
| Область | Разрешённый сценарий | Запрещённый сценарий |
|---|---|---|
| Карточка | Свой объект | Объект другой организации |
| Файл | Доступный документ | Прямой адрес чужого файла |
| Изменение | Допустимое действие роли | Изменение без полномочия |
| Экспорт | Разрешённый набор | Выгрузка избыточных записей |
| Сессия | Актуальное право | Действие после отзыва |
OWASP подчёркивает необходимость проверки полномочий независимо от клиентского интерфейса. Поэтому отсутствие кнопки не завершает тест. В разрешённом контуре проверяют фактические серверные операции и возвращаемые поля. Не ограничивайтесь основным API, если файлы или отчёты выдаются отдельным маршрутом.
Учитывайте изменение состояния
Пользователь может открыть страницу до отзыва роли и продолжить действие позже. Сервер должен применить актуальное правило в предусмотренный момент. Уточните сроки обновления сессии и права. Не предполагаете мгновенного глобального отзыва только потому, что аккаунт отключён в одной системе.
Проверьте кэширование и совместный компьютер на согласованных сценариях. Информация одного клиента не должна попадать следующему из общего кэша или оставшегося состояния интерфейса. Для клиентских пространств важно разделение на всех путях чтения, а не только условие в одной выборке базы.
Учебный пример документа партнёра
Два тестовых партнёра имеют документы с разными идентификаторами. Первый пользователь может открыть свой файл и получает предусмотренный отказ при обращении к чужому. Затем ему выдают ограниченную роль для второй организации и проверяют только разрешённые действия. После отзыва повторяют сценарий в уже открытой сессии.
Если файл продолжает быть доступным по бессрочной публичной ссылке, команда разбирает это как отдельную архитектурную проблему. Пример не является инструкцией проверять произвольные чужие сайты. Его цель — показать безопасную воспроизводимую проверку собственного кабинета на заранее подготовленных объектах.
Включите кеш и фоновые результаты
Проверка основного API не покрывает автоматически готовые выгрузки, уведомления и сохранённые ответы. Убедитесь, что результат, сформированный для одной организации, не выдаётся другой при похожем адресе или общем ключе кеша. Используйте заранее подготовленные тестовые роли и объекты с явно различимым разрешённым содержимым.
После отзыва доступа проверьте уже начатую выгрузку и ранее выданную ссылку в рамках согласованных правил срока действия. Не предполагайте, что изменение роли задним числом меняет любой ранее созданный ресурс. Опишите ожидаемую границу отзыва и сопоставьте её с фактическим поведением. Такой набор раскрывает путь данных целиком, включая места, которые пользователь не видит как отдельный экран кабинета.
Оформите доказательство и повторную проверку
В отчёте укажите роль, объект, действие, ожидание и фактический результат без действующих секретов. Для найденной ошибки сохраните минимальный пример. После исправления повторите запрещённый и разрешённый сценарии: защита не должна одновременно лишить законного пользователя нужной функции.
Проверка матрицы не равна полной оценке безопасности всей системы. Остаются другие области, которые рассматриваются по отдельному объёму. Но такой набор даёт конкретные доказательства изоляции данных и входит в регрессию. При новых ролях, файлах и интеграциях его обновляют вместе с контрактом кабинета.
Как проверять ссылку на файл после отзыва доступа
Сначала создайте разрешённую ссылку на синтетический документ, затем отзовите доступ тестового пользователя. Проверьте открытие старой ссылки в активном сеансе и другом браузере. Если используются временные ссылки хранилища, учитывайте их явно согласованный срок действия и модель отзыва.
Повторите сценарий для архива экспорта и файла, созданного фоновой задачей. Проверка только страницы списка недостаточна: данные могут оставаться доступны по отдельному адресу. Запишите ожидаемое поведение и фактический результат, не используя документы реальных клиентов. Обнаруженный разрыв подтверждают повторным тестом после исправления; скрытие ссылки в интерфейсе не закрывает проблему серверной выдачи файла.
Термины из материала
Источники и документация
У каждого документа указана дата последней проверки. Состав функций и интерфейсы сервисов могут меняться. Ссылки открываются в новой вкладке.
- OWASP: проверка прав доступа Проверено
Применить к вашему проекту
Проверим разграничение данных кабинета на согласованных сценариях и безопасном тестовом наборе.
Обсудить задачу