← Документация WAF / rate-limiting-rules
Лучшие практики rate limiting
В следующих разделах описаны типовые конфигурации rate limiting для распространённых сценариев. Вы можете комбинировать приведённые примеры правил и адаптировать их под свой сценарий.
Основные сценарии применения rate limiting:
- Гранулярный контроль доступа к ресурсам. Включает управление доступом по таким критериям, как user agent, IP-адрес, referrer, хост, страна и регион мира.
- Защита от credential stuffing и атак с захватом учётных записей.
- Ограничьте число операций , выполняемых отдельными клиентами. Сюда входит предотвращение скрейпинга ботами, доступа к чувствительным данным, массового создания новых аккаунтов и программных покупок на платформах электронной коммерции.
- Защита REST API от исчерпания ресурсов (целевых DDoS-атак), а ресурсы — от злоупотреблений в целом.
- Защита GraphQL API — предотвращая перегрузку сервера и ограничивая количество операций.
Обеспечение гранулярного контроля доступа
Ограничение по user agent
Типичный сценарий — ограничение частоты запросов от отдельных user agent. Следующее правило-пример позволяет мобильному приложению выполнять максимум 100 запросов за 10 минут. Можно также создать отдельное правило, ограничивающее частоту для десктопных браузеров.
| Настройка | Значение |
|---|---|
| Критерии совпадения | User Agent равен MobileApp |
| Expression | http.user_agent eq "MobileApp" |
| Характеристики подсчёта | IP |
| Частота (запросы / период) | 100 запросов / 10 минут |
| Действие | Managed Challenge |
Ограничение повторного использования одного cf_clearance (cookie)
После того как посетитель успешно проходит Managed Challenge, Cloudflare выдаёт cf_clearance (cookie), помечающий их как проверенных. Однако злоумышленники могут пытаться переиспользовать или передавать один действительный cf_clearance значение между несколькими запросами или устройствами для обхода дополнительных челленджей.
Это правило rate limiting помогает смягчить такое злоупотребление, ограничивая количество запросов с одним и тем же cf_clearance (значение) за заданный период. Легитимные пользователи-люди не пострадают, а автоматизированные или повторно воспроизводимые запросы с одним clearance-токеном будут блокироваться после превышения порога.
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /checkout |
| Expression | http.request.uri.path eq "/checkout" |
| Характеристики подсчёта | Cookie (cf_clearance) |
| Частота (запросы / период) | 100 запросов / 10 минут |
| Действие | Block |
Разрешение отдельных IP-адресов или ASN
Ещё один сценарий управления доступом к ресурсам — исключение или включение IP-адресов либо номеров автономных систем (ASN) в правило rate limiting.
Следующий пример правила разрешает до 10 запросов в минуту с одного IP-адреса, выполняющего GET запрос к /status, при условии что IP-адрес посетителя не входит в partner_ips IP-список.
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /status и Request Method равен GET и IP-адрес источника не входит в список partner_ips |
| Expression | http.request.uri.path eq "/status" and http.request.method eq "GET" and not ip.src in $partner_ips |
| Характеристики подсчёта | IP |
| Частота (запросы / период) | 10 запросов / 1 минута |
| Действие | Managed Challenge |
Ограничение по рефереру
Некоторые приложения получают запросы, порождённые другими источниками (например, рекламой со ссылками на сторонние страницы). Возможно, вы захотите ограничить число запросов от отдельных страниц-реферреров, чтобы управлять квотами или избежать непрямых DDoS-атак.
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /status и Request Method равен GET |
| Expression | http.request.uri.path eq "/status" and http.request.method eq "GET" |
| Характеристики подсчёта | Заголовок (Referer) 1 |
| Частота (запросы / период) | 100 запросов / 10 минут |
| Действие | Block |
Для этого примера правила требуется Advanced Rate Limiting.
Ограничение по хосту назначения
SaaS-приложения или клиенты, использующие Cloudflare SSL for SaaS могут иметь тысячи хостов в одной зоне, из-за чего создавать отдельные правила для каждого хоста непрактично. Чтобы решить эту задачу, можно создать правило rate limiting, использующее хост в качестве характеристики подсчёта.
Следующее правило-пример будет отслеживать частоту запросов к /login для каждого хоста:
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /login и Request Method равен GET |
| Expression | http.request.uri.path eq "/login" and http.request.method eq "GET" |
| Характеристики подсчёта | IP и Host |
| Частота (запросы / период) | 10 запросов / 10 минут |
| Действие | Block |
Для этого примера правила требуется Advanced Rate Limiting.
Защита от credential stuffing
Типичный сценарий использования rate limiting — защита эндпоинта входа от таких атак, как credential stuffing ↗. Следующий пример содержит три разных правила rate limiting с нарастающими санкциями для клиентов, выполняющих слишком много запросов.
Правило #1
| Настройка | Значение |
|---|---|
| Критерии совпадения | Hostname equals example.com и URI Path equals /login и Request Method равен POST |
| Expression | http.host eq "example.com" and http.request.uri.path eq "/login" and http.request.method eq "POST" |
| Характеристики подсчёта | IP |
| Increment counter when | URI Path равен /login и Method равен POST и Response code is in (401, 403) |
| Выражение подсчёта | http.request.uri.path eq "/login" and http.request.method eq "POST" and http.response.code in {401 403} |
| Частота (запросы / период) | 4 запроса / 1 минута |
| Действие | Managed Challenge |
Правило №2
| Настройка | Значение |
|---|---|
| Критерии совпадения | Hostname equals example.com и URI Path equals /login и Request Method равен POST |
| Expression | http.host eq "example.com" and http.request.uri.path eq "/login" and http.request.method eq "POST" |
| Характеристики подсчёта | IP |
| Increment counter when | URI Path равен /login и Request Method равен POST и Response Status Code входит в (401, 403) |
| Выражение подсчёта | http.request.uri.path eq "/login" and http.request.method eq "POST" and http.response.code in {401 403} |
| Частота (запросы / период) | 10 запросов / 10 минут |
| Действие | Managed Challenge |
Правило №3
| Настройка | Значение |
|---|---|
| Критерии совпадения | Host равен example.com |
| Expression | http.host eq "example.com" |
| Характеристики подсчёта | IP |
| Increment counter when | URI Path равен /login и Request Method равен POST и Response Status Code входит в (401, 403) |
| Выражение подсчёта | http.request.uri.path eq "/login" and http.request.method eq "POST" and http.response.code in {401 403} |
| Частота (запросы / период) | 20 запросов / 1 час |
| Действие | Блокировка на 1 день |
Эти примеры правил требуют тарифа Business или выше.
Правило #1 разрешает до четырёх запросов в минуту, после чего срабатывает Managed Challenge. Такая конфигурация даёт легитимным клиентам несколько попыток вспомнить пароль. Если несколько запросов делает автоматизированный субъект, этот клиент, скорее всего, будет остановлен нерешённым Managed Challenge. С другой стороны, если человек получает и проходит челлендж при достижении лимита правила #1, правило #2 обеспечит следующий уровень защиты, разрешая до 10 запросов в течение следующих 10 минут. Для клиентов, превысивших этот второй порог, сработает правило #3 (самое строгое), блокируя клиента на один день.
У этих трёх правил выражение подсчёта отделено от выражения правила (также известного как выражение блокировки). Когда вы настраиваете отдельное выражение подсчёта, критерии совпадения используются только при срабатывании действия. В выражение подсчёта можно включать условия на основе кода состояния HTTP-ответа и заголовков HTTP-ответа, интегрируя тем самым rate limiting с логикой вашего бэкенда.
Можно также использовать два разных выражения — выражение подсчёта и выражение правила/митигации, — чтобы задать:
- Запросы, используемые для вычисления частоты.
- Запросы, к которым фактически было применено действие.
Например, правило № 3 вычисляет частоту с учётом POST запросов к /login , вернувшие 401 или 403 код состояния HTTP. Однако при превышении лимита частоты Cloudflare блокирует каждый запрос к example.com , сгенерированных одним и тем же IP-адресом. Подробнее о выражениях подсчёта см. в Расчёт частоты запросов.
Защита OTP- и верификационных эндпоинтов
Эндпоинты одноразовых паролей (OTP) и верификации (например, /api/otp/validate или /account/verify) — частые цели атак перебором. Эти конечные точки особенно чувствительны, потому что атакующие отправляют большие объёмы запросов с разными кодами, пытаясь угадать действительный OTP.
При настройке rate limiting для этих конечных точек следуйте этим рекомендациям:
- Совпадение с точным путём URI: выражение правила должно соответствовать пути, на который приходит атакующий трафик. Проверьте путь в аналитике перед созданием правила. Правило, нацеленное на
/validate/otpне будет соответствовать запросам к/api/otp/validate. - Использование подсчёта по ответам: учитывать только запросы, возвращающие ответы с ошибками (например,
401или403), чтобы не применять rate limiting к легитимным пользователям, отправляющим действительные коды. - Правильно ограничивайте географию: если вы ограничиваете по странам, убедитесь, что атакующий трафик исходит из всех стран, которые вы видите в аналитике, а не только из одной.
Следующее правило-пример защищает эндпоинт проверки OTP, подсчитывая только неудачные попытки:
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /api/otp/validate и Request Method равен POST |
| Expression | http.request.uri.path eq "/api/otp/validate" and http.request.method eq "POST" |
| Характеристики подсчёта | IP |
| Increment counter when | URI Path равен /api/otp/validate и Request Method равен POST и Response Status Code входит в (401, 403) |
| Выражение подсчёта | http.request.uri.path eq "/api/otp/validate" and http.request.method eq "POST" and http.response.code in {401 403} |
| Частота (запросы / период) | 5 запросов / 1 минута |
| Действие | Блокировать на 10 минут |
Приведённое выше правило требует плана Business или выше.
Если ваш OTP-эндпоинт возвращает 200 и для корректных, и для некорректных кодов (с результатом в теле ответа), используйте вместо этого подсчёт по запросам с более низким порогом:
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /api/otp/validate и Request Method равен POST |
| Expression | http.request.uri.path eq "/api/otp/validate" and http.request.method eq "POST" |
| Характеристики подсчёта | IP |
| Частота (запросы / период) | 10 запросов / 1 минута |
| Действие | Managed Challenge |
Ограничение количества операций
С помощью rate limiting можно ограничить количество операций, выполняемых клиентом. Конкретное правило для такой защиты зависит от вашего приложения. Следующие примеры охватывают скрейпинг контента ↗ через параметры строки запроса или JSON-тело.
Защита от скрейпинга контента (через строку запроса)
В этом примере клиенты выполняют операции (например, просмотр цен и добавление в корзину) на сайте электронной коммерции с разными параметрами строки запроса. Типичный запрос клиента может выглядеть так:
GET https://store.com/merchant?action=lookup_price&product_id=215
Cookie: session_id=12345Ваша команда безопасности может рассмотреть настройку лимита на число просмотров цен клиентом, чтобы боты — которые могли ускользнуть от Cloudflare Bot Management — не выгрузили весь каталог магазина.
Правило #1
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /merchant и URI Query String contains action=lookup_price |
| Expression | http.request.uri.path eq "/merchant" and http.request.uri.query contains "action=lookup_price" |
| Характеристики подсчёта | IP |
| Частота (запросы / период) | 10 запросов / 2 минуты |
| Действие | Managed Challenge |
Правило №2
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /merchant и URI Query String contains action=lookup_price |
| Expression | http.request.uri.path eq "/merchant" and http.request.uri.query contains "action=lookup_price" |
| Характеристики подсчёта | IP |
| Частота (запросы / период) | 20 запросов / 5 минут |
| Действие | Block |
Эти два правила rate limiting сопоставляют запросы, выполняющие выбранное действие (в этом примере — просмотр цены), и используют IP как характеристику подсчёта. Аналогично предыдущие /login (пример), эти два правила помогут снизить число ложных срабатываний в случае настойчивых (но легитимных) посетителей.
Чтобы ограничить поиск определённого product_id через параметр строки запроса, вы можете добавить именно этот параметр как характеристику подсчёта, чтобы частота рассчитывалась по всем запросам независимо от клиента. Следующее правило-пример ограничивает количество обращений для каждого product_id до 50 запросов за 10 секунд.
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /merchant |
| Expression | http.request.uri.path eq "/merchant" |
| Характеристики подсчёта | Query (product_id) |
| Частота (запросы / период) | 50 запросов / 10 секунд |
| Действие | Block |
Для этого примера правила требуется Advanced Rate Limiting.
По той же схеме правил rate limiting можно защищать приложения, обрабатывающие резервирования и бронирования.
Предотвращение скрейпинга контента (по телу запроса)
Рассмотрим приложение, которое обрабатывает операцию и её параметры через тело запроса в формате JSON. Например, lookup_price может выглядеть следующим образом:
POST https://api.store.com/merchant
Cookie: session_id=12345
Body:
{
"action": "lookup_price",
"product_id": 215
}В этом сценарии можно написать правило, ограничивающее число действий из отдельных сессий:
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /merchant и JSON String action equals lookup_price |
| Expression | http.request.uri.path eq "/merchant" and lookup_json_string(http.request.body.raw, "action") eq "lookup_price" |
| Характеристики подсчёта | Cookie (session_id) |
| Частота (запросы / период) | 10 запросов / 2 минуты |
| Действие | Managed Challenge |
Для этого примера правила требуются Advanced Rate Limiting и инспекция payload.
Вы также можете ограничить число обращений к каждому product_id независимо от клиента, выполняющего запросы, развернув правило наподобие следующего:
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /merchant и JSON-поле action equals lookup_price |
| Expression | http.request.uri.path eq "/merchant" and lookup_json_string(http.request.body.raw, "action") eq "lookup_price" |
| Характеристики подсчёта | JSON-поле (product_id) |
| Частота (запросы / период) | 50 запросов / 10 секунд |
| Действие | Block |
Для этого примера правила требуются Advanced Rate Limiting и инспекция payload.
Ограничение запросов от ботов
Общий подход к выявлению трафика ботов — применять rate limiting к запросам, которые вызывают большой объём 403 или 404 кодов состояния ответа от исходного сервера. Обычно это указывает на автоматизированную активность приложений-скрейперов.
В этой ситуации можно настроить правило, подобное следующему:
| Настройка | Значение |
|---|---|
| Критерии совпадения | Hostname equals example.com |
| Expression | http.host eq "example.com" |
| Характеристики подсчёта | IP |
| Increment counter when | Код состояния ответа входит в (403, 404) |
| Выражение подсчёта | http.response.code in {403 404} |
| Частота (запросы / период) | 5 запросов / 3 минуты |
| Действие | Managed Challenge |
Это правило-пример требует плана Business или выше.
Чтобы контролировать частоту действий, выполняемых автоматизированными источниками, рассмотрите использование правил rate limiting вместе с Bot Management. С Bot Management вы можете использовать оценка ботов (bot score) в критериях сопоставления, чтобы применять правило только к автоматизированному или вероятно автоматизированному трафику. Например, можно использовать максимальную оценку (порог) 30 для вероятно автоматизированного трафика и 10 для автоматизированного трафика.
Если ваше приложение отслеживает сессии с помощью cookie, вы можете использовать cookie для задания контекста rate limiting (то есть как характеристику подсчёта). Если задать характеристикой rate limiting значение Cookie, правило будет группировать запросы с разных IP-адресов, но принадлежащие одной сессии, — типичный сценарий при работе с ботнетом, выполняющим распределённую атаку.
Правило #1
| Настройка | Значение |
|---|---|
| Критерии совпадения | Bot Score меньше 30 и строка запроса URI содержит action=delete |
| Expression | cf.bot_management.score lt 30 and http.request.uri.query contains "action=delete" |
| Характеристики подсчёта | Cookie (session_id) |
| Частота (запросы / период) | 10 запросов / 1 минута |
| Действие | Managed Challenge |
Правило №2
| Настройка | Значение |
|---|---|
| Критерии совпадения | Bot Score меньше 10 и строка запроса URI содержит action=delete |
| Expression | cf.bot_management.score lt 10 and http.request.uri.query contains "action=delete" |
| Характеристики подсчёта | Cookie (session_id) |
| Частота (запросы / период) | 20 запросов / 5 минут |
| Действие | Block |
Эти примеры правил требуют Advanced Rate Limiting и Bot Management.
Если приложение не использует сессионный cookie, вы можете использовать JA3-отпечатки для идентификации отдельных клиентов. JA3-отпечаток — это уникальный идентификатор, доступный клиентам с Bot Management, который позволяет Cloudflare определять запросы, приходящие от одного клиента. Отпечаток есть у всех клиентов — как автоматизированных, так и нет.
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /merchant и Bot Score меньше 10 |
| Expression | http.request.uri.path eq "/merchant" and cf.bot_management.score lt 10 |
| Характеристики подсчёта | JA3 Fingerprint |
| Частота (запросы / период) | 10 запросов / 1 минута |
| Действие | Managed Challenge |
Этот пример правила требует Advanced Rate Limiting и Bot Management.
Защита REST API
API могут создавать значительную нагрузку на бэкенд приложения, поскольку API-запросы могут быть дорогими в вычислении и обслуживании. Такие запросы могут также требовать сложных операций (например, обработки данных и объёмных выборок), которые при злоупотреблении способны в итоге вывести исходный сервер из строя.
Предотвращение объёмных атак
Advanced Rate Limiting может смягчать многие типы объёмных атак, такие как DDoS-атаки, mass assignment и эксфильтрация данных.
Распространённая задача — ограничить POST действия. Для аутентифицированного трафика вы можете использовать API Discovery, чтобы определить подходящую частоту запросов для каждого эндпоинта, а затем создайте правило rate limiting, подобное следующему:
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /endpoint1 и Request Method равен POST |
| Expression | http.request.uri.path eq "/endpoint1" and http.request.method eq "POST" |
| Характеристики подсчёта | Заголовок (x-api-key) |
| Частота (запросы / период) | По подсказке API Discovery или по результатам анализа прошлого трафика. |
| Действие | Block |
Для этого примера правила требуется Advanced Rate Limiting. Для API Discovery требуется дополнительная лицензия.
Характеристикой подсчёта может быть любой заголовок, ключ, токен, cookie, параметр запроса и даже поле JSON-тела, поскольку некоторые API передают ID сессии или ID пользователя в JSON-теле. Дополнительную информацию см. в следующих разделах:
- Если ваш уникальный идентификатор находится в пути URI, см. Защита ресурсов.
- Если ваш уникальный идентификатор находится в JSON-теле, см. Предотвращение скрейпинга контента (по телу запроса).
Защита ресурсов
GET запросы также могут создавать чрезмерную нагрузку на приложение или затрагивать дорогостоящие ресурсы, например пропускную способность. Рассмотрим приложение с большим количеством хранимых файлов (например, изображений), где клиенты скачивают файл по его URL:
GET https://api.store.com/files/<FILE_ID>
Header: x-api-key=9375Вероятно, вы хотите ограничить количество скачиваний во избежание злоупотреблений, но не хотите писать отдельные правила для каждого файла, учитывая размер хранилища данных. В этом случае можно написать правило наподобие следующего:
| Настройка | Значение |
|---|---|
| Критерии совпадения | Hostname equals api.example.com и Request Method равен GET |
| Expression | http.host eq "api.example.com" and http.request.method eq "GET" |
| Характеристики подсчёта | Path |
| Частота (запросы / период) | По подсказке API Discovery или по результатам анализа прошлого трафика. |
| Действие | Block |
Для этого примера правила требуется Advanced Rate Limiting.
Правило задаёт лимит в 10 скачиваний за 10 минут для каждого файла в https://api.store.com/files/*. Используя Path как характеристику правила, вы избавляетесь от необходимости писать новое правило каждый раз, когда появляется новый загруженный файл с другим <FILE_ID>. С этим правилом частота вычисляется по каждому запросу независимо от исходного IP или идентификатора сессии.
Вы также можете сочетать Path с x-api-key (заголовок) — или IP, если ключа или токена нет, — чтобы задать максимальное число скачиваний, которое конкретный клиент, идентифицируемый по x-api-key, может составить о данном файле:
| Настройка | Значение |
|---|---|
| Критерии совпадения | Hostname equals api.store.com и Request Method равен GET |
| Expression | http.host eq "api.example.com" and http.request.method eq "GET" |
| Характеристики подсчёта | Путь и заголовок (x-api-key) |
| Частота (запросы / период) | По подсказке API Discovery или по результатам анализа прошлого трафика. |
| Действие | Block |
Для этого примера правила требуется Advanced Rate Limiting.
Защита GraphQL API
Предотвращение перегрузки сервера для GraphQL API может отличаться от предотвращения перегрузки для RESTful API. Одна из главных трудностей приложений на GraphQL в том, что все запросы к серверу проходят через один путь, и каждый запрос обычно представляет собой POST операции. Это не позволяет задавать разные лимиты частоты для разных сценариев использования API на основе HTTP-метода и пути URI.
Однако, в отличие от RESTful API с его методом и путём, назначение запроса обычно заложено в теле, где указано, какие данные клиент хочет получить или изменить (согласно Терминология GraphQL ↗ для изменения данных на стороне сервера) вместе с любыми дополнительными данными, необходимыми для выполнения действия.
Чтобы предотвратить перегрузку сервера, рассмотрите следующие подходы:
- Ограничьте число вызовов одной и той же GraphQL-операции конкретным пользователем.
- Ограничьте суммарную сложность запросов, разрешённую каждому отдельному пользователю.
- Ограничьте сложность запроса для каждого отдельного запроса.
Следующие примеры основаны на приложении, принимающем отзывы о фильмах. GraphQL-запрос может выглядеть так:
POST https://moviereviews.example.com/graphql
Cookie: session_id=12345
Body:
{
"data": {
"createReview": {
"stars": 5,
"commentary": "This is a great movie!"
}
}
}Ограничьте число операций
Чтобы ограничить частоту действий, можно использовать следующее правило:
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path равен /graphql и Body contains createReview |
| Expression | http.request.uri.path eq "/graphql" and http.request.body.raw contains "createReview" |
| Характеристики подсчёта | Cookie (session_id) |
| Частота (запросы / период) | 5 запросов / 1 час |
| Действие | Block |
Для этого примера правила требуются Advanced Rate Limiting и инспекция payload.
Ограничьте суммарную сложность запросов
Сложность обработки GraphQL-запроса может существенно варьироваться. Поскольку API использует единственный эндпоинт, трудно определить сложность каждого запроса до его обслуживания.
Чтобы защитить исходный сервер от исчерпания ресурсов, нужно ограничивать не число запросов, а объём сложности, необходимой для обслуживания одного клиента за период времени. Cloudflare Rate Limiting позволяет создавать правила, которые отслеживание сложности во времени и блокировать последующие запросы после исчерпания бюджета или лимита сложности.
Этот тип rate limiting требует, чтобы сервер оценивал каждый обслуженный запрос по его сложности. Кроме того, сервер должен добавлять эту оценку в ответ в виде HTTP-заголовка. Затем механизм rate limiting использует эту информацию для обновления бюджета конкретного клиента.
Например, следующее правило задаёт суммарный бюджет сложности 1 000 в час:
| Настройка | Значение |
|---|---|
| Критерии совпадения | URI Path contains /graphql |
| Expression | http.request.uri.path eq "/graphql" |
| Характеристики подсчёта | Cookie (session_id) |
| Оценка за период | 1,000 |
| Period | 1 час |
| Response header name | score |
| Действие | Block |
Для этого примера правила требуются Advanced Rate Limiting и инспекция payload.
Обрабатывая запрос, исходный сервер добавляет score HTTP-заголовок к ответу со значением, отражающим, сколько работы источник затратил на его обработку, — например, 100. В следующий час тот же клиент может выполнять запросы в пределах дополнительного бюджета 900. Как только этот бюджет будет превышен, последующие запросы будут блокироваться до истечения тайм-аута.
Ограничьте сложность каждого отдельного запроса
Клиенты API Shield могут использовать защиту от вредоносных запросов GraphQL для своих GraphQL API. Эта защита сканирует GraphQL-трафик на запросы, способные перегрузить исходный сервер и привести к отказу в обслуживании. Вы можете создавать правила, ограничивающие глубину и размер входящих GraphQL-запросов, чтобы блокировать подозрительно большие или сложные запросы.
См. Документация API Shield ↗ для получения дополнительной информации о защите от вредоносных запросов GraphQL.
Сноски
-
Имя HTTP-заголовка использует написание с ошибкой от слова "referrer". ↩