Ресурсы · 37
Защита API GraphQL: авторизация, стоимость запроса и доказательства
Обеспечение прав на объекты и поля, ограничение работы сервера и тестирование путей отказа.
Обновлено · 2 min
Чего помогает достичь это руководство
- Составление карты открытой схемы
- Проверка разрешений
- Стоимость связанных запросов
- Проверка отказов
Быстрая проверка
- Может ли одна учетная запись читать объект другой учетной записи?
- Следует ли конфиденциальное поле решению о доступе родительского поля?
- Какова общая стоимость глубины, псевдонимов и пагинации?
- Какие детали утекают через ошибки?
- Кто наблюдает за отказами и злоупотреблениями?
Пошаговый метод
- 1
Операции инвентаризации
Список типов, полей, мутаций, ролей, владельцев объектов и конфиденциальных данных. Включая текущие запросы клиентов и редко используемые пути.
Результат: матрица операций, ролей, объектов и полей.
- 2
Тестирование каждого решения о доступе
Создание отдельных тестовых учетных записей и замена идентификаторов объектов, включая вложенные объекты. Резолверы должны обеспечивать авторизацию перед возвратом данных.
Результат: воспроизводимые разрешенные и запрещенные случаи.
- 3
Работа с сервером
Измерение фактической стоимости полей и коллекций. Тестирование глубины, ширины, псевдонимов, пагинации, пакетной обработки и времени, а затем установка соответствующих ограничений.
Результат: политика стоимости и набор запросов для противодействия.
- 4
Снижение ненужной уязвимости
Принятие решения об интроспекции для контекста, сокрытие внутренних деталей ошибок и удаление полей, которые раскрывают больше информации, чем необходимо клиентам.
Результат: проверка общедоступной конфигурации и ответов об ошибках.
- 5
Сдержанное наблюдение
Регистрация полезной технической информации об идентификации, работе, стоимости, отказе и корреляции, исключая секреты и конфиденциальные аргументы. Назначение ответственного за оповещения.
Результат: панель мониторинга и процедура расследования.
- 6
Воспроизведение после изменения
При изменении поля, роли или клиента повторите авторизацию и нагрузочные случаи. Проверьте старые запросы, которые теперь проходят через пересмотренный граф.
Результат: результаты регрессионного анализа и решение о выпуске.
Показатели управления
| Показатель | Что он измеряет | Первое действие |
|---|---|---|
| Доступ | Обращения по объектам и полям отклонены, как и ожидалось. | Исправление механизма разрешения запросов. |
| Стоимость | Тяжелые запросы, ограниченные политикой. | Корректировка полей и ограничений. |
| Ошибки | Публичные ответы без внутренних деталей. | Сокращение раскрываемых деталей. |
| Регрессия | Воспроизведение клиентских операций после изменения | Блокировка непреднамеренных сбоев |
Распространенные ошибки
- Доверие только к доступу к конечной точке
- Ограничение глубины, но игнорирование ширины
- Забывание авторизации вложенных полей
- Логирование аргументов с конфиденциальными данными
Часто задаваемые вопросы
Удаляет ли GraphQL обычную авторизацию API?
Нет. Для доступа к каждому объекту и полю по-прежнему требуется решение, основанное на идентификаторе и контексте.
Достаточно ли отключения интроспекции?
Нет. Это может уменьшить раскрытие схемы, но не исправляет стоимость доступа или запроса.
Достаточно ли ограничения глубины?
Нет. Псевдонимы, ширина, списки и стоимость, специфичная для поля, также имеют значение.
Официальные ссылки
Ссылки подтверждают метод. Адаптируйте проверки к вашему контексту; они не являются сертификацией. Оригинальные названия ссылок и исходные документы могут быть на другом языке.






