INTEGRITY Dokumentace

Dynamický obsah a problémy s přihlašováním

Dynamické stránky, jako jsou přihlašovací formuláře, průběh objednávky nebo cesty autentizované aplikace, se mohou při příliš agresivním cachování přestat správně chovat.

Mezi časté příznaky patří:

Přihlašovací stránka uložená v mezipaměti odstraňuje cookies relace

Jednou z častých příčin je Cache Rule nebo starší Page Rule nastavené pro cachování dynamického HTML.

K tomu obvykle dochází, pokud platí všechny následující podmínky:

Při tomto nastavení může Cloudflare odpověď uložit do mezipaměti a odstranit Set-Cookie hlavičku ještě předtím, než se odpověď uloží na edge. Prohlížeč proto obdrží přihlašovací stránku, ale nikdy nezíská cookie relace, kterou potřebuje pro další požadavek.

Jak to ověřit

Zkontrolujte odpověď pro přihlašovací stránku nebo jinou dynamickou trasu.

Pokud platí obě následující podmínky, je stránka pravděpodobně uložena v mezipaměti, i když by neměla být:

Po odeslání formuláře se také mohou objevit chyby specifické pro daný framework, například:

Tento problém se často vyskytuje u frameworků, které při prvním načtení stránky spoléhají na session nebo CSRF cookie, včetně JavaServer Faces, ASP.NET, PHP session handlerů, Django, Rails a Laravel.

Řešení

Neukládejte do cache přihlašovací stránky ani jiný autentizovaný HTML obsah.

Místo toho:

  1. Omezit Způsobilé pro cache nebo Cache Everything pouze na statické cesty.
  2. Přidejte konkrétnější pravidlo Cache Rule, které obchází nebo zakazuje ukládání do mezipaměti pro cesty jako /login, /account, /cart, /checkout, a cesty API aplikace.
  3. Pokud má ukládání do mezipaměti řídit origin server, odstraňte veškeré přepsání Edge TTL, které vynucuje ukládání stránky do mezipaměti.
  4. Ověřte, že opravená odpověď nyní vrací CF-Cache-Status: DYNAMIC, MISS, nebo BYPASS, a zachovává Set-Cookie.

Další informace o chování cookies najdete v části Interakce hlavičky odpovědi Set-Cookie s mezipamětí.

Smyčky challenge při přihlašování nebo v procesu vyplňování formulářů

Bezpečnostní kontroly mohou také narušit dynamické procesy.

Dva běžné vzory jsou:

Jak to ověřit

Zkontrolujte, zda Vlastní pravidlo WAF, spravované pravidlo, nebo pravidlo pro omezení frekvence platí pro přihlašovací cestu.

Pokud se problém týká pouze cest jako /login, /signin, /checkout, nebo /api/auth/*, a aplikace funguje, když je challenge pro tyto cesty vypnutá, challenge pravděpodobně narušuje průběh procesu.

Řešení

Použijte jeden z následujících postupů:

  1. Z pravidla challenge vylučte cestu pro přihlášení nebo odeslání formuláře.
  2. Zužte výraz pravidla tak, aby se vztahoval pouze na podezřelý provoz.
  3. Pokud potřebujete danou cestu chránit, použijte při načtení stránky méně rušivou kontrolu a přísnější opatření uplatněte až v dalších krocích procesu.

Při ladění také ověřte, že pravidla neodpovídají cestám generovaným Cloudflare, jako je /cdn-cgi/*.

Další informace o chování souvisejícím s challenge najdete v části Řešení problémů s pravidly a Řešení problémů s Cloudflare WAF.