← Dokumentace WAF / rate-limiting-rules
Parametry omezení frekvence požadavků
Dostupné parametry pravidla omezení frekvence požadavků jsou popsány v následujících částech.
Další informace o aktuálních omezeních konfigurace pravidel najdete v Omezení konfigurace.
Přehled parametrů
Když příchozí požadavky odpovídají
- Typ dat:
String - Název pole v API:
expression(pole pravidla)
Určuje kritéria, podle kterých pravidlo pro omezení četnosti požadavků odpovídá požadavku.
Použít omezování frekvence požadavků i na aktiva v mezipaměti
- Typ dat:
Boolean - Název pole v API:
requests_to_origin(volitelné, s opačným významem než možnost v Cloudflare dashboardu)
Pokud je tento parametr deaktivován (nebo pokud requests_to_origin pole API je nastaveno na true), se při určování frekvence požadavků zohlední pouze požadavky směřující na origin server (tedy požadavky, které nejsou v mezipaměti).
V některých případech nelze deaktivovat Použít omezování frekvence požadavků i na aktiva v mezipaměti parametru kvůli omezením konfigurace. Více informací najdete v Omezení konfigurace s podrobnostmi.
V závislosti na vašem plán Cloudflare, tento parametr pravidla nemusí být dostupný. V takovém případě Cloudflare uplatní omezení frekvence požadavků i na cachovaná aktiva (tento parametr je ve výchozím nastavení zapnutý).
Se stejnými charakteristikami
- Typ dat:
Array<String> - Název pole v API:
characteristics
Sada parametrů, které určují, jak Cloudflare sleduje frekvenci požadavků pro dané pravidlo.
Použijte jednu nebo více z následujících vlastností:
| Hodnota v dashboardu | Hodnota 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>"] |
Použití názvu hlavičky psaného malými písmeny v API a Chybějící pole oproti prázdné hodnotě |
| Hodnota cookie (zadejte název cookie) | http.request.cookies["<cookie_name>"] |
Doporučené konfigurace a Chybějící pole oproti prázdné hodnotě |
| Hodnota dotazu (zadejte název parametru) | http.request.uri.args["<query_param_name>"] |
Chybějící pole oproti prázdné hodnotě |
| Host | http.host |
|
| Cesta | http.request.uri.path |
|
| AS Num | ip.src.asnum |
|
| Země | ip.src.country |
|
| JA3 Fingerprint | cf.bot_management.ja3_hash |
|
| JA4 | cf.bot_management.ja4 |
|
| JSON string value of (zadejte klíč) | lookup_json_string(http.request.body.raw, "<key>") |
Chybějící pole oproti prázdné hodnotě a lookup_json_string() referenční dokumentace k funkci |
| JSON integer value of (zadejte klíč) | lookup_json_integer(http.request.body.raw, "<key>") |
Chybějící pole oproti prázdné hodnotě a lookup_json_integer() referenční dokumentace k funkci |
| Form input value of (zadejte název pole) | http.request.body.form["<input_field_name>"] |
Chybějící pole oproti prázdné hodnotě |
| JWT claim of (zadejte ID konfigurace tokenu, název nároku) | lookup_json_string( http.request.jwt.claims["<token_configuration_id>"][0], "<claim_name>") |
Požadavky na nároky (claims) v JWT, chybějící pole oproti prázdné hodnotě a Referenční příručka JWT Validation |
| Body | 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, například substring() nebo lower(), nebo zadejte složitější výraz. |
Funkce |
Dostupné charakteristiky závisí na vašem plánu Cloudflare. Viz Dostupnost s dalšími informacemi.
Zvýšit čítač, když
- Typ dat:
String - Název pole v API:
counting_expression(volitelné)
K dispozici pouze v Cloudflare dashboardu, pokud zapnete Použití vlastního výrazu pro počítání.
Určuje kritéria použitá pro stanovení četnosti požadavků. Ve výchozím nastavení je počítací výraz stejný jako výraz pro shodu pravidla (definovaný v Když příchozí požadavky odpovídají). Toto výchozí nastavení se použije i v případě, že toto pole nastavíte na prázdný řetězec ("").
Výraz pro počítání může obsahovat Pole HTTP odpovědi. Pokud výraz pro počítání obsahuje pole odpovědi, počítání proběhne až po odeslání odpovědi.
V některých případech nelze do počítaného výrazu zahrnout pole odpovědi HTTP kvůli omezením konfigurace. Přečtěte si Omezení konfigurace s podrobnostmi.
Když frekvence překročí
- Název pole v API: N/A (podle vybrané možnosti jsou vyžadována odlišná pole API)
Počítání pro omezení frekvence požadavků může být:
- Na základě požadavku: Provádí omezení frekvence požadavků na základě počtu příchozích požadavků za dané období. Jde o jedinou metodu počítání, pokud není k dispozici omezení frekvence požadavků založené na složitosti.
- Na základě složitosti: Provádí omezení frekvence požadavků na základě složitost nebo nákladů na zpracování požadavků za dané období. Dostupné pouze pro zákazníky s plánem Enterprise, kteří mají Advanced Rate Limiting.
Když frekvence překročí > Požadavky
- Typ dat:
Integer - Název pole v API:
requests_per_period
Počet požadavků za dané časové období, který pravidlo spustí. Platí pro omezení frekvence požadavků založené na počtu požadavků.
Když frekvence překročí > Období
- Typ dat:
Integer - Název pole v API:
period
Časové období, které se má zohlednit (v sekundách) při vyhodnocování frekvence požadavků. Dostupné hodnoty se liší 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).
Když frekvence překročí > Skóre za období
- Typ dat:
Integer - Název pole v API:
score_per_period
Maximální skóre za dané období. Po překročení této hodnoty se provede akce pravidla. Platí pro omezení frekvence požadavků na základě složitosti.
Když frekvence překročí > Název hlavičky odpovědi
- Typ dat:
String - Název pole v API:
score_response_header_name
Název HTTP hlavičky v odpovědi, kterou nastavuje origin server a která obsahuje skóre aktuálního požadavku. Platí pro omezení frekvence požadavků na základě složitosti.
Poté proveďte akci
- Typ dat:
String - Název pole v API:
action(pole pravidla)
Akce, která se provede po dosažení frekvence definované v pravidle.
Použijte jednu z následujících hodnot v API: block, js_challenge (Non-Interactive Challenge), managed_challenge (Managed Challenge), challenge (Interactive Challenge), nebo log.
Pokud vyberete Block akce můžete definovat vlastní odpověď pomocí následujících parametrů:
S typem odpovědi (pro Block akce)
- Typ dat:
String - Název pole v API:
response>content_type(volitelné)
Určuje typ obsahu vlastní odpovědi při zablokování požadavku kvůli limitu četnosti požadavků. Dostupné pouze v případě, že nastavíte akce pravidla na Block.
Dostupné hodnoty API: application/json, text/html, text/xml, nebo text/plain.
S kódem odpovědi (pro Block akce)
- Typ dat:
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 zablokování požadavku kvůli limitu četnosti požadavků. Dostupné pouze v případě, že 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)
- Typ dat:
String - Název pole v API:
response>content(volitelné)
Určuje tělo vrácené HTTP odpovědi, když je požadavek zablokován kvůli limitu četnosti požadavků. Dostupné pouze v případě, že nastavíte akce pravidla na Block.
Maximální velikost pole je 30 KB.
Pro dobu trvání
- Typ dat:
Integer - Název pole v API:
mitigation_timeout
Jakmile je dosaženo limitu rychlosti, pravidlo pro omezení rychlosti použije akci pravidla na další požadavky po dobu definovanou v tomto poli (v sekundách).
V dashboardu vyberte jednu z dostupných hodnot, která se liší podle vašeho plánu Cloudflare. Dostupné hodnoty 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 s plánem Free, Pro a Business nemohou zvolit dobu trvání při použití akce typu výzvy, jejich pravidlo omezení frekvence požadavků bude u těchto akcí vždy provádět omezování rychlosti požadavků (throttling). Při tomto omezování rychlosti nedefinujete dobu trvání. Jakmile návštěvníci projdou výzvou, jejich odpovídající čítač požadavků se nastaví na nulu. Jakmile návštěvníci se stejnými hodnotami charakteristik pravidla odešlou dostatek požadavků k opětovnému spuštění pravidla rate limiting, obdrží nové ověření.
Zákazníci s plánem Enterprise mohou dobu trvání (nebo časový limit zmírnění) nastavit vždy, i při použití některé z akcí typu Challenge.
S následujícím chováním
- Typ dat:
Integer - Název pole v API:
mitigation_timeout
Určuje přesné chování vybrané akce.
Chování akce může být jedno z následujících:
-
Provést akci po zvolenou dobu: Použije nakonfigurovanou akci na všechny požadavky přijaté během vybrané doby. Chcete-li toto chování nakonfigurovat přes API, nastavte
mitigation_timeoutna hodnotu vyšší než nula. Podívejte se na Pro dobu trvání s dalšími informacemi.
-
Omezit požadavky překračující maximální nakonfigurovanou rychlost: Použije vybranou akci na příchozí požadavky nad nakonfigurovaný limit, ostatní požadavky povolí. Chcete-li toto chování nakonfigurovat přes API, nastavte
mitigation_timeoutna0(nula).
Poznámky k charakteristikám rate limitingu
Případy použití IP adres s podporou NAT
Použijte IP s podporou NAT k řešení situací, jako jsou požadavky se sdílenou IP adresou v rámci NAT. Cloudflare k identifikaci jedinečných návštěvníků používá řadu technik chránících soukromí, které mohou zahrnovat použití cookies relace. Podívejte se na Cloudflare Cookies s podrobnostmi.
Co zvážit při používání IP adres s podporou NAT
IP s podporou NAT se spoléhá na mechanismus identifikace návštěvníků založený na cookies (_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 identifikováni jednotlivě. Požadavky od těchto návštěvníků sdílejí jeden counter bucket, což může v prostředích NAT s vysokým provozem způsobit falešně pozitivní výsledky.
- Pro bezpečnostně kritické omezení frekvence požadavků (například při ochraně přihlašovacích nebo platebních koncových bodů) zkombinujte IP s podporou NAT s dalšími charakteristikami, jako je Cesta nebo Hodnota hlavičky, abyste omezili dopad mezer v identifikaci.
Nekompatibilní charakteristiky
Nelze použít současně IP s podporou NAT a IP jako charakteristiky stejného pravidla pro omezení frekvence požadavků.
Nepoužívejte cf.colo.id jako pole ve výrazech
Neměli byste používat cf.colo.id charakteristiku (ID datacentra) jako pole ve výrazech pravidel. Kromě toho cf.colo.id hodnoty se mohou bez upozornění měnit. Další informace o této charakteristice omezení frekvence požadavků najdete v Výpočet frekvence požadavků.
Použití názvu hlavičky psaného malými písmeny (pro uživatele API)
Pokud používáte Hodnota hlavičky charakteristiku v požadavku API (s http.request.headers["<header_name>"]), musíte název hlavičky zadat malými písmeny, protože Cloudflare normalizuje názvy hlaviček v rámci globální sítě Cloudflare.
Chybějící pole oproti prázdné hodnotě
Pokud používáte Hodnota hlavičky, Hodnota cookie, Hodnota dotazu, JSON string value of, lookup_json_integer(...), nebo Form input value of charakteristika a konkrétní název hlavičky, cookie, parametru, klíče JSON nebo pole formuláře v požadavku chybí, pravidlo omezení rychlosti se na požadavek přesto může vztahovat, v závislosti na vašem výrazu pro počítání.
Pokud takové požadavky nevyfiltrujete, objeví se konkrétní čítač požadavků pro požadavky, kde pole chybí, což se bude lišit od čítače požadavků, kde je pole přítomné s prázdnou hodnotou.
Pokud chcete v kontextu konkrétního pravidla rate limitingu zohlednit pouze požadavky, ve kterých je přítomna konkrétní HTTP hlavička, upravte výraz pro počítání 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 limiting.
Doporučené konfigurace při použití hodnoty Cookie
Pokud používáte Hodnota cookie jako charakteristiku pravidla pro omezení frekvence požadavků, postupujte podle těchto doporučení:
- Vytvořte vlastní pravidlo které blokuje požadavky s více než jednou hodnotou pro cookie.
- Před prováděním náročných serverových operací ověřte hodnotu cookie na originu.
Požadavky na použití nároků (claims) v JSON Web Tokenu (JWT)
Chcete-li použít nároky (claims) uvnitř tokenu JSON Web Token (JWT), musíte nejprve nastavit konfigurace ověřování tokenu v API Shield.
Omezení konfigurace
-
Pokud výraz filtru pravidla definovaný v Když příchozí požadavky odpovídají parametr obsahuje vlastní seznamy, musíte zapnout Použít omezování frekvence požadavků i na aktiva v mezipaměti .
-
Výraz filtru pravidla nesmí obsahovat Pole HTTP odpovědi.
-
Počítací výraz pravidla definovaný v Zvýšit čítač, když parametr nesmí obsahovat současně Pole HTTP odpovědi a vlastní seznamy. Pokud používáte vlastní seznamy, musíte povolit Použít omezování frekvence požadavků i na aktiva v mezipaměti .
-
Při vytváření sady pravidel pro omezení frekvence požadavků na úrovni účtu, výraz pro nasazení sady pravidel (definující rozsah) nesmí obsahovat Pole HTTP odpovědi nebo vlastní seznamy.