Практическое руководство FindRisk

Безопасность GraphQL и WebSocket: права, стоимость запросов и сессии

Обычный лимит HTTP-запросов не описывает стоимость GraphQL, а проверка при WebSocket handshake не гарантирует права на каждое сообщение. Рассматривайте операции, пользователей и ресурсы, а не только сетевую точку входа.

Что сделать

  1. 1Опишите доступные поля, mutations, каналы и действия для каждой роли.
  2. 2Проверьте права на объект в resolver-ах и каждом WebSocket-сообщении с двумя тестовыми пользователями.
  3. 3Задайте бюджет GraphQL по глубине и стоимости, лимиты пагинации и квоты с учётом batching.
  4. 4Для браузерного WebSocket проверяйте точный Origin, подлинность сессии и её отзыв.
  5. 5Ограничьте размер сообщений, число соединений и очереди; нагрузочные тесты выполняйте в отдельном контуре.
  6. 6Оцените необходимость introspection и debug-ошибок отдельно от авторизации и защиты ресурсов.

Материалы по теме

Весь каталог

Источники и границы

  • Публичная схема не доказывает уязвимость, а закрытая схема не заменяет контроль доступа.
  • Проверка требует тестовых ролей и наблюдения за внутренней стоимостью операций.