Контроль доступа к API и отдельным данным

API может передавать заказы, документы и данные кабинета без обычных страниц сайта. Поэтому скрытый интерфейс или отсутствие ссылки в меню не являются защитой. Каждый запрос должен проверяться сервером с учётом личности, роли и конкретного объекта.

Разделите вход и полномочия

Действительный токен подтверждает способ доступа, но не разрешает читать любой заказ. Для каждого объекта приложение должно проверять, принадлежит ли он пользователю и допустимо ли запрошенное действие. Сложный или случайный идентификатор не заменяет эту проверку.

Что включить в проектирование

  • Минимальные права и срок жизни учётных данных.
  • Проверку входных типов, размеров и допустимых значений.
  • Выдачу только необходимых полей ответа.
  • Лимиты затратных и платных операций.
  • Безопасные ошибки без секретов и внутренней диагностики.
  • Журналы действий с ограничением чувствительных данных.

Не полагайтесь на CORS

CORS управляет определёнными браузерными взаимодействиями, но не запрещает произвольному клиенту обратиться к серверу. Секрет, помещённый в публичный JavaScript, тоже нельзя считать закрытым. Если запрос требует серверного секрета, архитектура должна исключать его выдачу посетителю.

Как проверять API

Создайте тестовых пользователей разных ролей и отдельные тестовые объекты. Проверьте отсутствие доступа, истечение и отзыв токена, обращение к чужим данным, превышение лимита и неверный формат. Убедитесь, что одинаковые правила действуют для веб-кабинета, мобильного клиента и старой версии API.

Что должно остаться после внедрения

Нужны документация endpoint, схема полномочий, владельцы интеграций и порядок смены ключей. Для внешнего партнёра выдавайте отдельные данные доступа, чтобы можно было отозвать одну интеграцию без остановки остальных. Открытая документация не является проблемой сама по себе; отсутствие серверных проверок — является.

Дополнительно: OWASP: безопасность REST API.

Читайте также

Если задача связана с вашим сайтом, можно обсудить проверку и доработку. Объём работ определяется после знакомства с проектом.