INTEGRITY Dokumentace

Sequence mitigation

Mitigace sekvencí vám umožňuje vynucovat vzorce požadavků u ověřených klientů komunikujících s vaším API.

Pomocí pravidel pro sekvence můžete definovat sadu známého chování klientů API, nebo odhalovat a zmírňovat škodlivé chování.

Můžete například očekávat, že požadavky API prováděné během bankovního převodu prostředků budou odpovídat následujícímu časovému pořadí:

Pořadí Metoda Cesta Popis
1 GET /api/v1/users/{user_id}/accounts user_id je aktivní uživatel.
2 GET /api/v1/accounts/{account_id}/balance account_id je jeden z účtů uživatele.
3 GET /api/v1/accounts/{account_id}/balance account_id je jiný účet patřící danému uživateli.
4 POST /api/v1/transferFunds Obsahuje tělo požadavku, které specifikuje účet, ze kterého se mají prostředky převést, účet, na který se mají převést, a částku, která se má převést.

Můžete chtít vynutit, aby uživatel API požadoval GET /api/v1/users/{user_id}/accounts před GET /api/v1/accounts/{account_id}/balance a že požadujete GET /api/v1/accounts/{account_id}/balance před POST /api/v1/transferFunds.

Pomocí zmírnění sekvencí můžete tento vzor požadavků vynutit dvěma novými pravidly zmírnění sekvencí.

Proces

Můžete vytvořit pravidlo sekvence , abyste postupem času vynucovali chování svého API jedním ze dvou způsobů.

Pozitivní bezpečnostní model blokuje uživatele, kteří odesílají požadavky API mimo očekávané vzory. Negativní bezpečnostní model blokuje uživatele, kteří provedou známou škodlivou sekvenci volání API.

Pravidla pro sekvence sestavená v Cloudflare dashboardu pomocí pravidel API Shield využívají pro shodu endpointů v sekvenci okno zpětného pohledu. Pravidlo se uplatní, dokud se oba endpointy nacházejí do 10 požadavků (k endpointům v rámci Endpoint Management) od sebe navzájem a uskutečněné do 10 minut od sebe navzájem.

Pokud chcete přidat více endpointů, ignorovat okno zpětného pohledu a nastavit časová omezení, přečtěte si Vlastní pravidla mitigace sekvencí.

V příkladu s bankovním převodem finančních prostředků vynucení toho, že uživatel požaduje GET /api/v1/accounts/{account_id}/balance před POST /api/v1/transferFunds se považuje za pozitivní bezpečnostní model, protože uživatel může provést převod prostředků až po zobrazení zůstatku účtu.

Negativní bezpečnostní model může být užitečný, pokud zaznamenáte zneužívající chování mimo běžný rámec vaší aplikace a potřebujete tyto požadavky zastavit, zatímco zjišťujete, jaký pozitivní bezpečnostní model zavést.

Pokud by například existovala chyba v autorizaci, která by uživatelům umožnila procházet profily jiných uživatelů obsahující čísla účtů prostřednictvím GET /api/v1/users/{var1}/profile a poté se uživatel pokusí provést podvodný převod finančních prostředků, můžete vytvořit pravidlo, které danou sekvenci zablokuje nebo zaznamená GET /api/v1/users/{var1}/profile na POST /api/v1/transferFunds.

Omezení

Endpoint Management

Chcete-li sledovat požadavky na API endpointy, musí být přidány do Endpoint Management. Koncové body přidejte do správy koncových bodů přes API Discovery, Ověřování schématu, nebo ručně přes dashboard Cloudflare.

Identifikátory relace

API Shield využívá vaše nakonfigurované identifikátor relace ke sledování relací. Aby sequence mitigation fungovala podle očekávání, musíte nakonfigurovat identifikátor relace, který je jedinečný pro každého koncového uživatele vašeho API.

Omezení požadavků

Ve výchozím nastavení uchovává API Shield aktuální a předchozích devět požadovaných koncových bodů pro každého jednotlivého uživatele API identifikovaného pomocí identifikátoru relace. Pokud vám výchozí okno zpětného pohledu nestačí, obraťte se na tým, který spravuje váš účet.

Mitigace sekvencí navíc při sestavování sekvence odstraňuje duplicitní požadavky na stejný endpoint.

Pro ilustraci, v původním příklad sekvence uvedených výše by mitigace sekvencí uložila následující sekvenci:

  1. GET /api/v1/users/{user_id}/accounts
  2. GET /api/v1/accounts/{account_id}/balance
  3. POST /api/v1/transferFunds

Mitigace sekvencí sloučila oba požadavky na GET /api/v1/accounts/{account_id}/balance a uložil je jako jediný požadavek.

Časová omezení

Pravidla mitigace sekvencí mají okno zpětného pohledu v délce 10 minut. Pokud od sebe nejsou dva požadavky se stejným identifikátorem relace vzdáleny více než 10 minut, sekvenci prodlouží. Požadavek, ke kterému dojde více než 10 minut po tom předchozím, zahajuje novou sekvenci.

Pokud například vytvoříte pravidlo vyžadující, aby byl jeden endpoint vyžádán před druhým, a mezi oběma požadavky uplyne více než 10 minut, pravidlo se neuplatní.

Dostupnost

Mitigace sekvencí je v současné době v uzavřené beta verzi a je dostupná pouze zákazníkům s tarifem Enterprise. Pokud se chcete do beta verze zapojit, obraťte se na tým, který spravuje váš účet.