Продвинутый
Как защитить GraphQL API от DoS-атак (глубокие запросы)?
В GraphQL клиент сам формирует запрос. Хакер может написать рекурсивный запрос огромной вложенности:
graphql
query { author { posts { author { posts { author { name } } } } } }
Такой запрос заставит сервер сделать тысячи выборок из БД и положит его (Denial of Service).
✅ Методы защиты:
1. Query Depth Limit (Лимит глубины): Запретить запросы с вложенностью больше, например, 5 уровней.
2. Query Complexity (Сложность запроса): Каждому полю назначается "вес" (скалярное поле = 1, массив = 10). Если суммарный вес запроса превышает лимит (например, 1000), сервер его отклоняет.
3. Persisted Queries: Разрешить выполнять только заранее сохраненные на сервере (одобренные) запросы.