Ресурсы · 37

Защита API GraphQL: авторизация, стоимость запроса и доказательства

Обеспечение прав на объекты и поля, ограничение работы сервера и тестирование путей отказа.

Обновлено · 2 min

Книги об интернете и технологиях на библиотечной полке Иллюстрация · вымышленная сцена

Чего помогает достичь это руководство

  • Составление карты открытой схемы
  • Проверка разрешений
  • Стоимость связанных запросов
  • Проверка отказов

Быстрая проверка

  • Может ли одна учетная запись читать объект другой учетной записи?
  • Следует ли конфиденциальное поле решению о доступе родительского поля?
  • Какова общая стоимость глубины, псевдонимов и пагинации?
  • Какие детали утекают через ошибки?
  • Кто наблюдает за отказами и злоупотреблениями?

Пошаговый метод

  1. 1

    Операции инвентаризации

    Список типов, полей, мутаций, ролей, владельцев объектов и конфиденциальных данных. Включая текущие запросы клиентов и редко используемые пути.

    Результат: матрица операций, ролей, объектов и полей.

  2. 2

    Тестирование каждого решения о доступе

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

    Результат: воспроизводимые разрешенные и запрещенные случаи.

  3. 3

    Работа с сервером

    Измерение фактической стоимости полей и коллекций. Тестирование глубины, ширины, псевдонимов, пагинации, пакетной обработки и времени, а затем установка соответствующих ограничений.

    Результат: политика стоимости и набор запросов для противодействия.

  4. 4

    Снижение ненужной уязвимости

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

    Результат: проверка общедоступной конфигурации и ответов об ошибках.

  5. 5

    Сдержанное наблюдение

    Регистрация полезной технической информации об идентификации, работе, стоимости, отказе и корреляции, исключая секреты и конфиденциальные аргументы. Назначение ответственного за оповещения.

    Результат: панель мониторинга и процедура расследования.

  6. 6

    Воспроизведение после изменения

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

    Результат: результаты регрессионного анализа и решение о выпуске.

Показатели управления

ПоказательЧто он измеряетПервое действие
ДоступОбращения по объектам и полям отклонены, как и ожидалось.Исправление механизма разрешения запросов.
СтоимостьТяжелые запросы, ограниченные политикой.Корректировка полей и ограничений.
ОшибкиПубличные ответы без внутренних деталей.Сокращение раскрываемых деталей.
РегрессияВоспроизведение клиентских операций после измененияБлокировка непреднамеренных сбоев

Распространенные ошибки

  • Доверие только к доступу к конечной точке
  • Ограничение глубины, но игнорирование ширины
  • Забывание авторизации вложенных полей
  • Логирование аргументов с конфиденциальными данными

Часто задаваемые вопросы

Удаляет ли GraphQL обычную авторизацию API?

Нет. Для доступа к каждому объекту и полю по-прежнему требуется решение, основанное на идентификаторе и контексте.

Достаточно ли отключения интроспекции?

Нет. Это может уменьшить раскрытие схемы, но не исправляет стоимость доступа или запроса.

Достаточно ли ограничения глубины?

Нет. Псевдонимы, ширина, списки и стоимость, специфичная для поля, также имеют значение.

Официальные ссылки

Ссылки подтверждают метод. Адаптируйте проверки к вашему контексту; они не являются сертификацией. Оригинальные названия ссылок и исходные документы могут быть на другом языке.