← Dokumentace WAF / rate-limiting-rules
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
- Datový typ:
String - Název pole v API:
expression(pole pravidla)
Definuje kritéria, podle kterých pravidlo rate limitingu odpovídá požadavku.
Also apply rate limiting to cached assets
- Datový typ:
Boolean - Název pole v API:
requests_to_origin(volitelné, s opačným významem než možnost v dashboardu Cloudflare)
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
- Datový typ:
Array<String> - Název pole v API:
characteristics
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
- Datový typ:
String - Název pole v API:
counting_expression(volitelné)
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
- Název pole v API: N/A (podle zvolené možnosti jsou vyžadována různá API pole)
Počítání rate limitingu může být:
- Založeno na požadavcích: Provádí rate limiting na základě počtu příchozích požadavků během daného období. Toto je jediná metoda počítání, když není dostupný rate limiting založený na komplexitě.
- Založeno na složitosti: Provádí rate limiting na základě komplexita nebo nákladů na zpracování požadavků během daného období. Dostupné pouze zákazníkům Enterprise s Advanced Rate Limitingem.
When rate exceeds > Requests
- Datový typ:
Integer - Název pole v API:
requests_per_period
Počet požadavků za dané období, který spustí pravidlo. Platí pro rate limiting založený na požadavcích.
When rate exceeds > Period
- Datový typ:
Integer - Název pole v API:
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
- Datový typ:
Integer - Název pole v API:
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
- Datový typ:
String - Název pole v API:
score_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
- Datový typ:
String - Název pole v API:
action(pole pravidla)
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)
- Datový typ:
String - Název pole v API:
response>content_type(volitelné)
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)
- Datový typ:
Integer - Název pole v API:
response>status_code(volitelné)
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)
- Datový typ:
String - Název pole v API:
response>content(volitelné)
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
- Datový typ:
Integer - Název pole v API:
mitigation_timeout
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
- Datový typ:
Integer - Název pole v API:
mitigation_timeout
Definuje přesné chování vybrané akce.
Chování akce může být jedno z následujících:
-
Perform action during the selected duration: Aplikuje nakonfigurovanou akci na všechny požadavky přijaté během zvolené doby. Pro konfiguraci tohoto chování přes API nastavte
mitigation_timeoutna hodnotu větší než nula. Viz For duration pro více informací.
-
Škrcení požadavků nad maximální nakonfigurovaný limit: Aplikuje vybranou akci na příchozí požadavky nad nakonfigurovaným limitem a ostatní požadavky povolí. Pro konfiguraci tohoto chování přes API nastavte
mitigation_timeoutna0(nula).
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í:
- Návštěvníci, kteří mažou cookies, používají anonymní prohlížení nebo cookies nepřijímají, nebudou individuálně identifikováni. Požadavky těchto návštěvníků sdílejí jeden společný čítač, což může v NAT prostředích s vysokým provozem způsobovat falešně pozitivní detekce.
- Pro bezpečnostně kritický rate limiting (například ochranu přihlašovacích nebo platebních endpointů) kombinujte IP s podporou NAT s dalšími charakteristikami jako Path nebo Hodnota hlavičky ke snížení dopadu mezer v identifikaci.
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.
Doporučené konfigurace při použití Cookie value of
Pokud používáte Hodnota cookie jako charakteristiku pravidla rate limitingu, řiďte se těmito doporučeními:
- Vytvořte vlastní pravidlo které blokuje požadavky s více než jednou hodnotou dané cookie.
- Ověřte hodnotu cookie na originu, než provedete jakékoli náročné serverové operace.
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
-
Pokud filtrovací výraz pravidla, definovaný v When incoming requests match parametr, zahrnuje vlastní seznamy, musíte povolit Also apply rate limiting to cached assets parametr.
-
Filtrovací výraz pravidla nesmí obsahovat Pole HTTP odpovědi.
-
Počítací výraz pravidla, definovaný v Increment counter when parametr, nemůže zahrnovat současně Pole HTTP odpovědi a vlastní seznamy. Pokud používáte vlastní seznamy, musíte povolit Also apply rate limiting to cached assets parametr.
-
Při vytváření sady pravidel rate limitingu na úrovni účtu, výraz nasazení rulesetu (definující rozsah) nemůže obsahovat Pole HTTP odpovědi nebo vlastní seznamy.