§§IBT7§§¶@definition¶GraphQL — язык запросов и среда выполнения API, позволяющие клиенту явно выбирать поля и структуру получаемых данных по опубликованной схеме.¶@plain¶Вместо нескольких фиксированных REST-ответов клиент формирует запрос к единой схеме. Гибкость требует отдельного контроля прав на поля, глубины и стоимости запросов.¶@use¶При защите GraphQL проверяют авторизацию на уровне объектов и полей, ограничивают сложность, пакетные запросы и introspection, валидируют входные данные и журналируют операции.¶@example¶Пользователь запрашивает только свой профиль, но добавляет поле с внутренними атрибутами. Сервер обязан проверить право именно на это поле, а не только факт входа.¶@compare¶Сравнени妦REST обычно публикует набор ресурсов и конечных точек; GraphQL предоставляет типизированную схему и гибкий запрос. Ни один подход сам по себе не гарантирует безопасность.¶@steps¶Схема¦Сервер описывает типы, поля, запросы и изменения данных.¤Запрос клиента¦Клиент выбирает необходимые поля и передаёт аргументы.¤Резолверы¦Обработчики получают данные, применяя аутентификацию и авторизацию.¤Ограничения¦Сервер контролирует глубину, стоимость, частоту и объём ответа, а события пишет в аудит.¶@resources¶¶@related¶gRPC¦/slovar-informacionnoy-bezopasnosti/appsec-i-devsecops/grpc¤REST API¦/slovar-informacionnoy-bezopasnosti/appsec-i-devsecops/rest-api¶@faq¶Можно ли скрыть схему и решить проблему безопасности?¦Отключение introspection уменьшает раскрытие, но не заменяет проверку прав и ограничение запросов.¤Какая типичная уязвимость?¦Отсутствие авторизации на уровне объекта или поля, позволяющее получить чужие либо служебные данные.¤Как защищаться от тяжёлых запросов?¦Ограничивать глубину и стоимость, вводить лимиты, тайм-ауты и сохранённые запросы для доверенных клиентов.