INTEGRITY Документация

Параметры правил rate limiting

Доступные параметры правил rate limiting описаны в следующих разделах.

Дополнительную информацию о текущих ограничениях конфигурации правил см. в Ограничения конфигурации.

Справочник параметров

Когда входящие запросы соответствуют

Определяет критерии, по которым правило rate limiting сопоставляется с запросом.

Также применять rate limiting к кешированным ресурсам

Если этот параметр отключён (или когда requests_to_origin (поле API) установлено в true) при определении частоты запросов будут учитываться только запросы, идущие к исходному серверу (то есть некешированные запросы).

В некоторых случаях нельзя отключить Также применять rate limiting к кешированным ресурсам (параметр) из-за ограничений конфигурации. См. Ограничения конфигурации для получения подробностей.

В зависимости от вашего План Cloudflare этот параметр правила может быть недоступен. В этом случае Cloudflare будет применять rate limiting и к кешированным ресурсам (параметр включён по умолчанию).

С теми же характеристиками

Набор параметров, определяющих, как Cloudflare отслеживает частоту запросов для правила.

Используйте одну или несколько следующих характеристик:

Значение в панели управления Значение в API Примечания
Н/Д (включено неявно) cf.colo.id(обязательно) Не используйте в выражениях
IP ip.src Несовместимо с IP с поддержкой NAT
IP с поддержкой NAT cf.unique_visitor_id Несовместимо с IP
Header value of (введите имя заголовка) http.request.headers["<header_name>"] В API используйте имя заголовка в нижнем регистре и Отсутствующее поле и пустое значение: в чём разница
Значение cookie (введите имя cookie) http.request.cookies["<cookie_name>"] Рекомендуемые конфигурации и Отсутствующее поле и пустое значение: в чём разница
Query value of (введите имя параметра) http.request.uri.args["<query_param_name>"] Отсутствующее поле и пустое значение: в чём разница
Host http.host
Path http.request.uri.path
AS Num ip.src.asnum
Country ip.src.country
JA3 Fingerprint cf.bot_management.ja3_hash
JA4 cf.bot_management.ja4
JSON string value of (введите ключ) lookup_json_string(http.request.body.raw, "<key>") Отсутствующее поле и пустое значение: в чём разница и lookup_json_string() — справочник по функции
JSON integer value of (введите ключ) lookup_json_integer(http.request.body.raw, "<key>") Отсутствующее поле и пустое значение: в чём разница и lookup_json_integer() — справочник по функции
Form input value of (введите имя поля) http.request.body.form["<input_field_name>"] Отсутствующее поле и пустое значение: в чём разница
JWT-клейм (введите ID конфигурации токена, имя клейма) lookup_json_string( http.request.jwt.claims["<token_configuration_id>"][0], "<claim_name>") Требования к клеймам в JWT, отсутствующее поле и пустое значение и Справочник по JWT Validation
Body http.request.body.raw
Body size (выберите оператор, введите размер) http.request.body.size
Custom (введите выражение) Введите пользовательское выражение. Можно использовать функцию, например substring() или lower() или введите более сложное выражение. Функции

Доступные характеристики зависят от вашего плана Cloudflare. См. Доступность для получения дополнительной информации.

Increment counter when

Доступно в панели управления Cloudflare только при включении Use custom counting expression.

Определяет критерии, используемые для расчёта частоты запросов. По умолчанию выражение подсчёта совпадает с выражением сопоставления правила (заданным в Когда входящие запросы соответствуют). Это значение по умолчанию применяется и тогда, когда вы задаёте этому полю пустую строку ("").

Выражение подсчёта может включать Поля HTTP-ответа. Когда в выражении подсчёта есть поля ответа, подсчёт происходит после отправки ответа.

В некоторых случаях включить поля HTTP-ответа в выражение подсчёта нельзя из-за ограничений конфигурации. См. Ограничения конфигурации для получения подробностей.

When rate exceeds

Подсчёт rate limiting может быть:

When rate exceeds > Requests

Число запросов за период времени, при котором сработает правило. Применяется к rate limiting по числу запросов.

When rate exceeds > Period

Период времени (в секундах), учитываемый при оценке частоты запросов. Доступные значения зависят от вашего тарифа Cloudflare.

Доступные значения API: 10, 60 (одна минута), 120 (две минуты), 300 (пять минут), 600 (10 минут) или 3600 (один час).

When rate exceeds > Score per period

Максимальная оценка за период. При превышении этого значения выполняется действие правила. Применяется к rate limiting на основе сложности.

When rate exceeds > Response header name

Имя HTTP-заголовка в ответе, устанавливаемого исходным сервером, с оценкой для текущего запроса. Применяется к rate limiting на основе сложности.

Затем примите меры

Действие, выполняемое при достижении частоты, указанной в правиле.

Используйте одно из следующих значений в API: block, js_challenge (неинтерактивный челлендж), managed_challenge (Managed Challenge), challenge (Interactive Challenge) или log.

Если вы выберете Block вы можете определить пользовательский ответ с помощью следующих параметров:

With response type (для Block )

Определяет тип контента пользовательского ответа при блокировке запроса из-за rate limiting. Доступно, только если для действие правила в Block.

Доступные значения API: application/json, text/html, text/xml, или text/plain.

С кодом ответа (для Block )

Определяет код состояния HTTP, возвращаемый посетителю при блокировке запроса из-за rate limiting. Доступно, только если для действие правила в Block.

Введите значение в диапазоне от 400 и 499. Значение по умолчанию — 429 (Too many requests).

Тело ответа (для Block )

Определяет тело возвращаемого HTTP-ответа при блокировке запроса из-за rate limiting. Доступно, только если для действие правила в Block.

Максимальный размер поля — 30 КБ.

For duration

После достижения заданной частоты правило rate limiting применяет действие правила к последующим запросам в течение периода, заданного в этом поле (в секундах).

В панели управления выберите одно из доступных значений, которые зависят от вашего тарифа Cloudflare. Доступные значения в API: 0, 10, 60 (одна минута), 120 (две минуты), 300 (пять минут), 600 (10 минут), 3600 (один час) или 86400 (один день).

Клиенты на тарифах Free, Pro и Business не могут выбирать длительность при использовании действие-челлендж — их правило rate limiting для этих действий всегда будет выполнять троттлинг запросов. При троттлинге запросов длительность не задаётся. Когда посетители проходят челлендж, соответствующий им счётчик запросов равен нулю. Когда посетители с теми же значениями характеристик правила выполнят достаточно запросов, чтобы снова сработало правило rate limiting, они получат новый челлендж.

Клиенты Enterprise всегда могут настроить длительность (или таймаут митигации), даже при использовании одного из действий-челленджей.

Со следующим поведением

Определяет точное поведение выбранного действия.

Поведение действия может быть одним из следующих:

Замечания о характеристиках правил rate limiting

Сценарии использования IP с поддержкой NAT

Используйте IP с поддержкой NAT для обработки ситуаций, когда запросы за NAT используют один и тот же IP-адрес. Для идентификации уникальных посетителей Cloudflare использует различные техники с сохранением приватности, включая, в некоторых случаях, сессионные cookie. См. Cookie Cloudflare для получения подробностей.

Замечания при использовании IP с поддержкой NAT

IP с поддержкой NAT опирается на механизм идентификации посетителей на основе cookie (_cfuvid (cookie)). Учитывайте следующее:

Несовместимые характеристики

Нельзя использовать одновременно IP с поддержкой NAT и IP в качестве характеристик одного и того же правила rate limiting.

Не используйте cf.colo.id как поле в выражениях

Не следует использовать cf.colo.id характеристику (идентификатор дата-центра) как поле в выражениях правил. Кроме того, cf.colo.id могут изменяться без предупреждения. Подробнее об этой характеристике rate limiting см. Расчёт частоты запросов.

Используйте имя заголовка в нижнем регистре (для пользователей API)

Если вы используете Header value of в API-запросе (с http.request.headers["<header_name>"]), имя заголовка необходимо вводить в нижнем регистре, поскольку Cloudflare нормализует имена заголовков в своей глобальной сети.

Отсутствующее поле и пустое значение: в чём разница

Если вы используете Header value of, Значение cookie, Query value of, JSON string value of, lookup_json_integer(...), или Form input value of характеристику, а конкретный заголовок/cookie/параметр/ключ JSON/имя поля формы отсутствует в запросе, правило rate limiting всё равно может применяться к запросу — в зависимости от вашего выражения подсчёта.

Если не отфильтровать такие запросы, будет определённый счётчик запросов для запросов, где поле отсутствует, — он будет отличаться от счётчика запросов, где поле присутствует с пустым значением.

Например, чтобы в рамках конкретного правила rate limiting учитывать только запросы с определённым HTTP-заголовком, скорректируйте выражение подсчёта правила, чтобы оно содержало что-то похожее на следующее:

and len(http.request.headers["<header_name>"]) > 0

Где <header_name> — то же имя заголовка, которое используется как характеристика правила rate limiting.

Если вы используете Значение cookie в качестве характеристики правила rate limiting, следуйте этим рекомендациям:

Требования к использованию утверждений (claims) внутри JSON Web Token (JWT)

Чтобы использовать клеймы внутри JSON Web Token (JWT), сначала нужно настроить конфигурация валидации токенов в API Shield.

Ограничения конфигурации