INTEGRITY Dokumentace

Ověřování schématu

API schéma definuje, které API požadavky jsou platné na základě několika vlastností požadavku, jako je cílový koncový bod, formát cesty nebo proměnné dotazu a HTTP metoda.

Schema Validation porovnává příchozí požadavky s nahraným schématem OpenAPI. Nahrané schéma určuje očekávanou strukturu požadavků pro Schema Profile.

Jakmile bude nahraný profil k dispozici, Cloudflare vygeneruje nepřetržitá detekce. Použijte cf.schema_validation.uploaded.violated , aby analyzoval a zmírnil porušení.

Detekce sama o sobě provoz nezmírňuje. Výsledky zkontrolujte v Analýza profilu před vynucení profilu pomocí Custom Rules.

Schema Validation 2.0 je aktuální verze. Referenční dokumentaci k předchozí verzi najdete v Konfigurace Classic Schema Validation.

Konfigurace nahraného schématu

Endpointy musí existovat jako operace v Webová aktiva > Operace. Nahrání přes dashboard automaticky přidá operace schématu.

Při použití API nebo Terraformu přidávejte operace schématu samostatně. Podrobnosti o automatizaci najdete v Konfigurace API nebo Terraform.

Nahrání schématu

  1. V dashboardu Cloudflare přejděte na Webová aktiva stránce.

    Přejděte na Webová aktiva ↗
  2. Přejděte na Ověřování schématu kartě.

  3. Vyberte Přidat ověření.

  4. Nahrajte soubor schématu OpenAPI.

  5. Vyberte Přidat schéma a koncové body.

Uplatnění změn může trvat několik minut v závislosti na počtu operací.

Správa nahraných schémat

  1. V dashboardu Cloudflare přejděte na Webová aktiva stránce.

    Přejděte na Webová aktiva ↗
  2. Přejděte na Ověřování schématu kartě.

  3. Vyberte Nastavení schématu.

  4. Filtrovat podle Zneužití API.

  5. V části Ověřování schématu > Aktivní schémata, zkontrolujte nahraná schémata.

  6. V kontextové nabídce schématu schéma stáhněte nebo odstraňte.

Odstraněním nahraného schématu se zastaví vyhodnocování jeho profilu. Přiřazené operace zůstanou v inventáři Web Assets.

Přidat záchytné pravidlo

Pravidlo fallthrough odpovídá požadavkům, které neodpovídají žádné známé operaci. Toto vlastní pravidlo WAF použijte k ochraně proti neidentifikovaným koncovým bodům.

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

    Přejděte na Bezpečnostní pravidla ↗
  2. Vyberte Šablony.

  3. Najděte Mitigate API requests to unidentified endpoints a vyberte Náhled šablony.

  4. Zadejte popisný název pravidla.

  5. Vyberte zamýšlené názvy hostitelů a akci pravidla.

  6. Vyberte Uložit jako koncept nebo Nasadit.

Pro vlastní logiku použijte cf.api_gateway.fallthrough_detected. Omezte platnost pravidla na název hostitele svého API nebo kořenovou cestu.


Specifikace

Cloudflare v současné době přijímá pouze Schémata OpenAPI v3 ↗. Přijímané formáty souborů jsou YAML (.yml nebo .yaml příponou souboru) a JSON (.json příponou souboru).

Schémata OpenAPI vygenerovaná různými nástroji nemusí být dostatečně přesná pro import do Schema validation. Použijte nástroj třetí strany, například Swagger Editor ↗ , abyste zajistili, že schémata vyhovují specifikaci OpenAPI.


Omezení

Schema validation (import) v rámci Cloudflare API Shield a Učení schématu (export) závisí na OpenAPI Specification (OAS) v3.0 ↗.

Tato podpora zahrnuje všechny patch verze, například OAS v3.0.x. OAS v3.1 není podporováno a rozšíření podpory na OpenAPI 2.0 se neplánuje.

API Shield aktuálně nepodporuje některé funkce schémat API, mimo jiné: všechny odpovědi, externí odkazy, netriviální šablonování cest nebo unikátní položky.

Pro povolená schémata platí limit 10,000 celkových operací pro zákazníky s plánem Enterprise, kteří si předplatili API Shield. Chcete-li tento limit zvýšit, kontaktujte svůj account team.

Velikost těla pro ověření

Schema Validation kontroluje těla požadavků do maximální velikosti dané vaším plánem. Požadavky, které tento limit překročí, se proti nahranému schématu nevyhodnocují.

Výchozí limity velikosti těla jsou:

Plán Výchozí limit velikosti těla požadavku
Free 1 KB
Pro 8 KB
Business 8 KB
Enterprise 128 KB

Identifikujte požadavky překračující limit velikosti těla

Pomocí protokolů požadavků porovnejte velikost těla požadavku s limitem vašeho plánu.

Limity pro zákazníky s plánem Free, Pro, Business nebo Enterprise, kteří nemají předplacený API Shield, najdete v Plány.

Povinná pole

Přestože je specifikace OpenAPI striktně nevyžaduje, Schema validation tato pole vyžaduje bezpodmínečně.

schema

parameter

Poznámky k ověřovaným a podporovaným polím

Podrobnosti o tom, které objekty a pole specifikace OpenAPI (OAS) Schema validation aktuálně podporuje, najdete v přehledu níže.

servers

parameter

reference

requestBody

parameter/schema

schema


Kontrola těla požadavku

API Shield dokáže rozpoznat specifikace těla požadavku obsažené v nahraných schématech a ověřit, že jim data příchozích požadavků API odpovídají.

Schema validation aktuálně podporuje validaci požadavků s content-type application/json.

Ve specifikaci OpenAPI jsou schémata těla požadavku přiřazena k rozsahům médií (media-ranges), například application/*, application/xml nebo application/json).

Když Cloudflare ověřuje příchozí požadavky, kontroluje u požadavku content-type odpovídá media-range zadanému v OpenAPI.

Když soubor OpenAPI například specifikuje application/* jako součást mapy obsahu těla požadavku, Cloudflare přijme požadavky s content-type application/xml a application/json. Nicméně pouze application/json těla budou ověřena podle dodaného schématu.

Cloudflare doporučuje udržovat media-ranges co nejužší tím, že je nastavíte na jednotlivý media-type. Pokud potřebujete na koncovém bodu API podporovat více content-types, můžete využít media-ranges se zástupnými znaky.

Opatrnosti je také třeba dbát, pokud je origin server nakonfigurován tak, aby prováděl MIME sniffing ↗. Pokud například požadavek s tělem JSON úmyslně obsahuje application/malicious content-type a Cloudflare byl nakonfigurován tak, aby povolil application/* media-ranges by se požadavek předal na origin bez ověření obsahu těla JSON. Origin, který ale hlavičku Content-Type ignoruje a tělo buď zkusmo deserializuje, nebo odhaduje typ MIME, může tělo JSON deserializovat s mylným předpokladem, že prošlo ověřením schématu těla.

Pokud proto potřebujete podporovat application/json a application/xml na stejném endpointu, můžete použít application/*. Cloudflare ověří zadané schéma pro těla požadavků, u kterých je content-type nastaven na application/json. Požadavky s content-type application/xml (a další odpovídající application/*) budou propuštěny. I tak důrazně doporučujeme na svém originu vypnout rozpoznávání typu obsahu (content-type sniffing).

Cloudflare umožňuje v mapě obsahu těla požadavku OpenAPI specifikovat následující media-ranges:

Rozsahy typů médií lze také nakonfigurovat tak, aby vynucovaly charset parametr. Cloudflare pro to akceptuje pouze charset parametr se statickou hodnotou utf-8 jako součást specifikace media-range, a je-li nakonfigurována, budeme obdobně vyžadovat, aby content-type požadavku nesl tuto znakovou sadu.


Řešení potíží

Tato část se věnuje běžným problémům, se kterými se můžete setkat při používání ověřování schémat.

Vyřešení OneOf porušení omezení

A OneOf chyba omezení znamená, že požadavek porušil svůj nahraný profil. Jeho tělo neodpovídalo přesně jednomu oneOf ↗ možnost.

Požadavek byl neplatný z jednoho ze dvou důvodů:

Chcete-li to opravit, porovnejte vzorkovaný požadavek s definicí jeho schématu. Požadavek může postrádat povinná pole nebo obsahovat neshodující se typy.


Dostupnost

Zákazníci s API Security již mají přístup ke Schema Profiles prostřednictvím Schema Learning a Schema Validation. Cloudflare otevírá uzavřenou betu pro pozvané zákazníky s plánem Enterprise bez API Security. Zájemci mohou o zařazení požádat prostřednictvím svého account teamu. Přístup k uzavřené betě neznamená budoucí dostupnost v rámci plánu ani cenu.