INTEGRITY Dokumentace

Vlastní pravidla mitigace sekvencí

Vlastní pravidla sekvencí API Shield využívají nakonfigurované API Shield identifikátor relace , aby sledoval pořadí požadavků uživatele a čas mezi požadavky, a zpřístupňuje je prostřednictvím Cloudflare Rules. Díky tomu můžete psát pravidla, která odpovídají platným nebo neplatným sekvencím.

Tato pravidla jsou podobná pravidla sekvence cookie ale mají odlišnou sadu požadavků:

Pravidla vytvořená pomocí těchto vlastních pravidel se podobají pravidlům sekvence, která lze nakonfigurovat prostřednictvím API nebo Cloudflare dashboardu protože využívají stejnou podkladovou technologii. Tato vlastní pravidla ale nabízejí větší flexibilitu, protože nad zaznamenanou sekvencí umožňují použít volnou logiku a poskytují přístup ke všem možnostem odezvy, které nabízejí sady pravidel.

Dostupnost

Tato pole sekvence jsou k dispozici v:

Název polePopisUkázková hodnota

cf.sequence.current_op
String

Toto pole obsahuje ID operace, která odpovídá aktuálnímu požadavku. Pokud aktuální požadavek neodpovídá žádné z operací definovaných v Endpoint Management, bude prázdným řetězcem.

c821cc00

cf.sequence.previous_ops
Array<String>

Toto pole obsahuje pole předchozích ID operací v sekvenci, seřazených od nejnovější po nejstarší. Aktuální požadavek v něm zahrnut není.

Pokud se operace opakuje, objeví se v sekvenci vícekrát.

["f54dac32", "c821cc00", "a37dc89b"]

cf.sequence.msec_since_op
Map<Number>

Toto pole obsahuje mapu, kde klíči jsou ID operací a hodnotami počet milisekund od posledního výskytu dané operace.

Nezahrnuje aktuální požadavek ani operaci, protože bere v úvahu jen předchozí operace v sekvenci.

{"f54dac32": 1000, "c821cc00": 2000}

Sestavení vlastního pravidla pro sekvence

  1. V dashboardu Cloudflare přejděte na Bezpečnostní pravidla stránce.

    Přejděte na Bezpečnostní pravidla ↗
  2. Chcete-li vytvořit nové prázdné pravidlo, vyberte Vytvořit pravidlo > Custom rules.

  3. Zadejte popisný název pravidla do Název pravidla.

  4. V části Když příchozí požadavky odpovídají, použijte Pole rozbalovacím seznamu filtrujte podle Sequences a vyberte z:

    • Current Operation
    • Předchozí operace
    • Uplynulý čas
  5. V části Hodnota, klikněte na ikonu úprav pro použití Builderu a sestavte sekvenci v postranním panelu.

  6. V části Vyberte název hostitele pro tuto sekvenci, z rozbalovacího seznamu vyberte všechny hostitele nebo konkrétní hostname. Volitelně můžete pomocí vyhledávacího pole vyhledat konkrétní hostname.

  7. Z Metody rozbalovacím seznamu vyberte všechny metody nebo konkrétní metodu požadavku.

  8. Zaškrtněte políčko u každého koncového bodu v pořadí, v jakém se mají v sekvenci zobrazit.

  9. Nastavte čas pro dokončení.

  10. Vyberte Save.

  11. V části Poté proveďte akci, vyberte akci pravidla v Vyberte akci rozbalovací nabídce. Pokud například vyberete Block říká Cloudflare, aby odmítal požadavky, které odpovídají vámi zadaným podmínkám.

  12. (Volitelné) Pokud jste vybrali Block akce si můžete nastavit vlastní odpověď.

  13. V části Umístit na, vyberte pořadí, kdy se pravidlo spustí.

  14. Chcete-li pravidlo uložit a nasadit, vyberte Nasadit. Pokud ještě nejste připraveni pravidlo nasadit, vyberte Save as Draft.

Příklady pravidel

Každý uložený koncový bod bude mít na stránce podrobností v Endpoint Management viditelné ID koncového bodu ve formě UUID. Níže uvedené odkazy (aaaaaaaa, bbbbbbbb, a cccccccc) jsou prvních osm znaků ID koncového bodu.

Návštěvník musí po odeslání požadavku počkat déle než 2 sekundy na endpoint aaaaaaaa před odesláním požadavku na endpoint bbbbbbbb:

cf.sequence.current_op eq "bbbbbbbb" and 
cf.sequence.msec_since_op["aaaaaaaa"] ge 2000

Návštěvník musí odeslat požadavek na endpointy aaaaaaaa, poté bbbbbbbb, poté cccccccc přesně v tomto pořadí:

cf.sequence.current_op eq "cccccccc" and 
cf.sequence.previous_ops[0] == "bbbbbbbb" and 
cf.sequence.previous_ops[1] == "aaaaaaaa"

Návštěvník musí odeslat požadavek na endpoint aaaaaaaa před endpointem bbbbbbbb, ale koncový bod aaaaaaaa se může nacházet kdekoli mezi předchozími 10 požadavky:

cf.sequence.current_op eq "bbbbbbbb" and 
any(cf.sequence.previous_ops[*] == "aaaaaaaa")

Návštěvník musí odeslat požadavek buď na endpoint aaaaaaaa před endpointem bbbbbbbb, nebo koncový bod cccccccc před endpointem bbbbbbbb:

(cf.sequence.current_op eq "bbbbbbbb" and 
any(cf.sequence.previous_ops[*] == "aaaaaaaa")) or 
(cf.sequence.current_op eq "bbbbbbbb" and 
any(cf.sequence.previous_ops[*] == "cccccccc"))