INTEGRITY Dokumentace

Parametry rate limitingu

Dostupné parametry pravidel rate limitingu jsou popsány v následujících částech.

Více informací o aktuálních omezeních konfigurace pravidel najdete v Omezení konfigurace.

Reference parametrů

When incoming requests match

Definuje kritéria, podle kterých pravidlo rate limitingu odpovídá požadavku.

Also apply rate limiting to cached assets

Pokud je tento parametr vypnutý (nebo když requests_to_origin je v API nastaveno na true), budou se při určování frekvence požadavků zohledňovat pouze požadavky směřující na origin (tedy požadavky, které nejsou kešované).

V některých případech nelze zakázat Also apply rate limiting to cached assets kvůli omezením konfigurace. Viz Omezení konfigurace s podrobnostmi.

V závislosti na vašem Plán Cloudflare, nemusí být tento parametr pravidla dostupný. V takovém případě Cloudflare uplatní rate limiting i na kešované assety (parametr je ve výchozím nastavení zapnutý).

Se stejnými charakteristikami

Sada parametrů definujících, jak Cloudflare sleduje frekvenci požadavků pro dané pravidlo.

Použijte jednu nebo více z následujících charakteristik:

Hodnota v dashboardu Hodnota v API Poznámky
N/A (implicitně zahrnuto) cf.colo.id(povinné) Nepoužívejte ve výrazech
IP ip.src Nekompatibilní s IP s podporou NAT
IP s podporou NAT cf.unique_visitor_id Nekompatibilní s IP
Hodnota hlavičky (zadejte název hlavičky) http.request.headers["<header_name>"] V API použijte název hlavičky malými písmeny a Chybějící pole versus prázdná hodnota
Hodnota cookie (zadejte název cookie) http.request.cookies["<cookie_name>"] Doporučené konfigurace a Chybějící pole versus prázdná hodnota
Query value of (zadejte název parametru) http.request.uri.args["<query_param_name>"] Chybějící pole versus prázdná hodnota
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
Řetězcová hodnota JSON (zadejte klíč) lookup_json_string(http.request.body.raw, "<key>") Chybějící pole versus prázdná hodnota a lookup_json_string() – reference funkce
JSON integer value of (zadejte klíč) lookup_json_integer(http.request.body.raw, "<key>") Chybějící pole versus prázdná hodnota a lookup_json_integer() – reference funkce
Form input value of (zadejte název pole) http.request.body.form["<input_field_name>"] Chybějící pole versus prázdná hodnota
JWT claim (zadejte ID konfigurace tokenu, název claimu) lookup_json_string( http.request.jwt.claims["<token_configuration_id>"][0], "<claim_name>") Požadavky na claims v JWT, chybějící pole versus prázdná hodnota a Reference JWT Validation
Tělo http.request.body.raw
Velikost těla (vyberte operátor, zadejte velikost) http.request.body.size
Custom (zadejte výraz) Zadejte vlastní výraz. Můžete použít funkci jako substring() nebo lower() nebo zadejte složitější výraz. Funkce

Dostupné charakteristiky závisí na vašem Cloudflare plánu. Viz Dostupnost pro více informací.

Increment counter when

Dostupné v Cloudflare dashboardu, pouze když povolíte Použití vlastního počítacího výrazu.

Definuje kritéria používaná pro určení frekvence požadavků. Ve výchozím nastavení je počítací výraz stejný jako výraz pro shodu pravidla (definovaný v When incoming requests match). Tato výchozí hodnota se použije i tehdy, když toto pole nastavíte na prázdný řetězec ("").

Výraz pro počítání může zahrnovat Pole HTTP odpovědi. Když jsou v počítacím výrazu pole odpovědi, počítání proběhne po odeslání odpovědi.

V některých případech nemůžete kvůli konfiguračním omezením zahrnout pole HTTP odpovědi do výrazu pro počítání. Viz Omezení konfigurace s podrobnostmi.

When rate exceeds

Počítání rate limitingu může být:

When rate exceeds > Requests

Počet požadavků za dané období, který spustí pravidlo. Platí pro rate limiting založený na požadavcích.

When rate exceeds > Period

Časové období (v sekundách), které se zohledňuje při vyhodnocování frekvence požadavků. Dostupné hodnoty liší se podle vašeho plánu Cloudflare.

Dostupné hodnoty API jsou: 10, 60 (jedna minuta), 120 (dvě minuty), 300 (pět minut), 600 (10 minut), nebo 3600 (jedna hodina).

When rate exceeds > Score per period

Maximální skóre za období. Při překročení této hodnoty se vykoná akce pravidla. Platí pro rate limiting založený na složitosti.

When rate exceeds > Response header name

Název HTTP hlavičky v odpovědi, nastavené origin serverem, se skóre pro aktuální požadavek. Platí pro rate limiting založený na složitosti.

Then take action

Akce, která se má provést při dosažení frekvence stanovené v pravidle.

V API použijte jednu z následujících hodnot: block, js_challenge (Non-Interactive Challenge), managed_challenge (Managed Challenge), challenge (Interactive Challenge), nebo log.

Pokud vyberete Block akci, můžete definovat vlastní odpověď pomocí následujících parametrů:

S typem odpovědi (pro Block akce)

Určuje typ obsahu vlastní odpovědi při blokování požadavku kvůli rate limitingu. Dostupné pouze tehdy, když nastavíte akce pravidla na Block.

Dostupné hodnoty API: application/json, text/html, text/xml, nebo text/plain.

Se stavovým kódem odpovědi (pro Block akce)

Určuje stavový kód HTTP vrácený návštěvníkovi při blokování požadavku kvůli rate limitingu. Dostupné pouze tehdy, když nastavíte akce pravidla na Block.

Musíte zadat hodnotu mezi 400 a 499. Výchozí hodnota je 429 (Too many requests).

Tělo odpovědi (pro Block akce)

Určuje tělo vrácené HTTP odpovědi, když je požadavek blokován kvůli rate limitingu. Dostupné pouze tehdy, když nastavíte akce pravidla na Block.

Maximální velikost pole je 30 KB.

For duration

Jakmile je frekvence dosažena, pravidlo rate limitingu uplatňuje akci pravidla na další požadavky po dobu definovanou v tomto poli (v sekundách).

V dashboardu vyberte jednu z dostupných hodnot, které liší se podle vašeho plánu Cloudflare. Dostupné hodnoty v API jsou: 0, 10, 60 (jedna minuta), 120 (dvě minuty), 300 (pět minut), 600 (10 minut), 3600 (jedna hodina), nebo 86400 (jeden den).

Zákazníci na plánech Free, Pro a Business nemohou vybrat dobu trvání při použití akce challenge — jejich pravidlo rate limitingu bude u těchto akcí vždy provádět throttling požadavků. Při throttlingu požadavků nedefinujete dobu trvání. Když návštěvníci projdou challenge, jejich odpovídající čítač požadavků je nastaveno na nulu. Jakmile návštěvníci se stejnými hodnotami charakteristik pravidla provedou dostatek požadavků, aby pravidlo rate limitingu spustili znovu, obdrží novou výzvu (challenge).

Zákazníci Enterprise mohou vždy nakonfigurovat dobu trvání (neboli mitigation timeout), a to i při použití některé z challenge akcí.

With the following behavior

Definuje přesné chování vybrané akce.

Chování akce může být jedno z následujících:

Poznámky k charakteristikám rate limitingu

Případy užití IP s podporou NAT

Použijte IP s podporou NAT pro řešení situací, jako jsou požadavky za NATem sdílející stejnou IP adresu. Cloudflare používá řadu technik chránících soukromí k identifikaci unikátních návštěvníků, mezi něž může patřit použití session cookies. Viz Cloudflare Cookies s podrobnostmi.

Poznámky k použití IP s podporou NAT

IP s podporou NAT spoléhá na mechanismus identifikace návštěvníků založený na cookie (_cfuvid cookie). Mějte na paměti následující:

Nekompatibilní charakteristiky

Nelze současně použít IP s podporou NAT a IP jako charakteristiky stejného pravidla rate limitingu.

Nepoužívejte cf.colo.id jako pole ve výrazech

Neměli byste používat cf.colo.id charakteristiku (ID datového centra) jako pole ve výrazech pravidel. Navíc cf.colo.id hodnoty se mohou bez upozornění změnit. Další informace o této charakteristice rate limitingu viz Výpočet frekvence požadavků.

Používejte název hlavičky malými písmeny (pro uživatele API)

Pokud používáte Hodnota hlavičky charakteristiku v API požadavku (s http.request.headers["<header_name>"]), musíte název hlavičky zadat malými písmeny, protože Cloudflare názvy hlaviček v globální síti Cloudflare normalizuje.

Chybějící pole versus prázdná hodnota

Pokud používáte Hodnota hlavičky, Hodnota cookie, Query value of, Řetězcová hodnota JSON, lookup_json_integer(...), nebo Form input value of charakteristiku a konkrétní název hlavičky/cookie/parametru/JSON klíče/pole formuláře v požadavku není přítomen, pravidlo rate limitingu se na požadavek přesto může vztahovat, v závislosti na vašem počítacím výrazu.

Pokud takové požadavky neodfiltrujete, objeví se specifický čítač požadavků pro požadavky, kde pole není přítomno, což bude jiný čítač než čítač požadavků, kde je pole přítomno s prázdnou hodnotou.

Chcete-li například v kontextu konkrétního pravidla rate limitingu zohlednit pouze požadavky, kde je přítomna určitá HTTP hlavička, upravte počítací výraz pravidla tak, aby obsahoval něco podobného následujícímu:

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

Kde <header_name> je stejný název hlavičky, jaký se používá jako charakteristika rate limitingu.

Pokud používáte Hodnota cookie jako charakteristiku pravidla rate limitingu, řiďte se těmito doporučeními:

Požadavky pro použití claimů uvnitř JSON Web Tokenu (JWT)

Pro použití claimů uvnitř JSON Web Tokenu (JWT) musíte nejprve nastavit konfigurace validace tokenů v API Shield.

Omezení konfigurace