INTEGRITY Dokumentace

Chraňte formuláře před spamem a zneužitím (Free, Pro a Business)

Kontaktní, registrační formuláře a formuláře pro dokončení objednávky jsou častým cílem automatizovaného zneužívání. Tento návod se věnuje ochraně formulářů: ověřování, že je návštěvník člověk, omezování opakovaných odeslání a blokování známých vzorů útoků. Základní postup využívá funkce dostupné ve všech plánech. Funkce plánů Pro a Business jsou uvedeny v samostatných rámečcích.

Přidejte Turnstile do svých formulářů

Turnstile ověřuje, že jsou návštěvníci lidé, aniž by zobrazoval viditelné výzvy. Tento návod používá režim Managed, který na základě rizikovosti návštěvníka automaticky zvolí neinteraktivní výzvu nebo výzvu se zaškrtávacím políčkem. Ostatní režimy widgetu najdete v Typy widgetů.

Přidání Turnstile zahrnuje tři kroky: vytvoření widgetu v dashboardu, přidání úryvku kódu na straně klienta na stránku formuláře a ověření tokenu na serveru před zpracováním odeslaného formuláře.

Vytvoření widgetu Turnstile

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

    Přejděte na Turnstile ↗
  2. Vyberte Přidání widgetu.

  3. Vyplňte požadované údaje:

    • Název widgetu: Popisný název widgetu.
    • Správa hostname: Domény, na kterých se bude widget používat.
    • Režim widgetu: Vyberte z možností Managed, Non-Interactive nebo Invisible.
  4. (Volitelné) Nastavte Podpora pre-clearance pro jednostránkové aplikace.

  5. Vyberte Vytvořit a widget se uloží.

  6. Zkopírujte si sitekey a secret key a secret key uložte na bezpečné místo.

Uložte sitekey a secret key. Sitekey použijete v klientském fragmentu kódu a secret key pro ověřování na straně serveru.

Přidejte úryvek kódu na straně klienta

Přidejte skript a widget Turnstile div prvek do každého formuláře, který chcete chránit. Nahraďte <YOUR-SITE-KEY> se sitekey z předchozího kroku.

<form id="contact-form" action="/submit" method="POST">
  <input type="text" name="name" placeholder="Name" required />
  <input type="email" name="email" placeholder="Email" required />
  <textarea name="message" placeholder="Message" required></textarea>
  <div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
  <button type="submit">Submit</button>
</form>

<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>

Widget se vykreslí ve formuláři a po úspěšném ověření návštěvníka vygeneruje token. Tento token je součástí odeslaného formuláře jako cf-turnstile-response .

Ověřte token na svém serveru

Je vyžadováno ověřování na straně serveru. Samotný widget na straně klienta vaše formuláře nechrání, protože útočníci mohou odesílat požadavky přímo na koncový bod formuláře. Tokeny lze ověřit pouze jednou.

Než začnete zpracovávat jakékoli odeslání formuláře, zavolejte Siteverify API:

server.js
const SECRET_KEY = "<YOUR-SECRET-KEY>";

async function validateTurnstile(token, remoteip) {
  try {
    const response = await fetch(
      "https://challenges.cloudflare.com/turnstile/v0/siteverify",
      {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({
          secret: SECRET_KEY,
          response: token,
          remoteip: remoteip,
        }),
      },
    );

    const result = await response.json();
    return result;
  } catch (error) {
    console.error("Turnstile validation error:", error);
    return { success: false, "error-codes": ["internal-error"] };
  }
}

Nahraďte "<YOUR-SECRET-KEY>" s tajným klíčem Turnstile. Endpoint vrátí objekt JSON s klíčem success pole. Odeslání formuláře zpracujte pouze v případě, že success je true.

Příklady ověřování v PHP, Python, Java a C# najdete v Ověření tokenu.

Omezte četnost požadavků na koncové body pro odesílání formulářů

Některé škodlivé skripty úplně obejdou prohlížeč a odesílají POST požadavky přímo na koncové body vašich formulářů. Application Security pravidla rate limitingu zachycují tyto požadavky, protože ověřování na straně klienta probíhá pouze v prohlížeči.

Zjistěte výchozí četnost požadavků

Než vytvoříte pravidlo pro omezování četnosti požadavků, zjistěte běžnou frekvenci odesílání u koncových bodů svých formulářů. Prahová hodnota omezení by měla být nad touto výchozí úrovní, aby nedocházelo k blokování legitimního provozu.

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

    Přejděte na Analytics ↗
  2. V Provoz kartě vyberte časové období mimo špičku nebo s nejnižší aktivitou návštěvníků.

  3. Použijte Přidat filtr tlačítko, kterým zúžíte výsledky na provoz vašeho koncového bodu formuláře.

  4. Zaznamenejte si typickou četnost požadavků na jednu IP adresu. Limit četnosti požadavků by měl být nad touto výchozí hodnotou.

Pokud nemáte dostatek dat o provozu pro stanovení výchozí hodnoty, začněte s konzervativním prahem a po nasazení jej upravte podle Security Events.

Vytvoření pravidla omezení frekvence požadavků

Vytvořte pravidlo, které omezí, kolikrát může jedna IP adresa odeslat formulář na daný koncový bod během zvoleného období. Cestu, hranici a období upravte podle potřeb svého webu.

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

    Přejděte na Bezpečnostní pravidla ↗
  2. Vyberte Vytvořit pravidlo a vyberte Rate limiting rules.

  3. Zadejte název pravidla (například "Rate limit u odesílání kontaktního formuláře").

  4. V části Když příchozí požadavky odpovídají, vyberte Edit expression a zadejte: (http.request.uri.path eq "/contact" and http.request.method eq "POST")

    Nahraďte "/contact" cestou koncového bodu vašeho formuláře.
  5. V části Se stejnými charakteristikami, ověřte, že IP je vybráno. U plánu Free je toto přednastaveno na IP.

  6. V části Když frekvence překročí, zadejte 5 pro Požadavky a vyberte hodnotu pro Období. V plánu Free vyberte 10 sekund. Plány Pro a vyšší nabízejí další časové úseky. Dostupné hodnoty podle plánu viz Parametry omezení frekvence požadavků.

  7. V části Poté proveďte akci, vyberte akci v rozevírací nabídce Vyberte akci rozbalovací nabídce. U plánu Free vyberte Block. V plánu Pro a vyšších, Managed Challenge se doporučuje, protože oprávněným uživatelům, kteří narazí na limit, umožní pokračovat po splnění výzvy.

  8. V části Pro dobu trvání, vyberte dobu trvání akce. V plánu Free vyberte 10 sekund. Plány Pro a vyšší nabízejí delší doby trvání. Udává, jak dlouho akce platí po spuštění rate limitu.

  9. Vyberte Nasadit.

Konfigurace vlastní odpovědi pro blokované požadavky (Pro a vyšší)

Místo výchozí chybové stránky Cloudflare při dosažení limitu rychlosti můžete nastavit vlastní odpověď. Podrobnosti najdete v Vytvoření pravidla omezení frekvence požadavků v dashboardu.

Přidejte pravidla Application Security pro známé vzorce zneužití

Samotné omezování četnosti požadavků nezachytí cílené vzory útoků, jako je SQL injection nebo cross-site scripting (XSS) v polích formulářů. Application Security vlastní pravidla a spravované sady pravidel vám umožňují blokovat tyto konkrétní vzory útoků na koncové body vašich formulářů. Vlastní pravidla se vyhodnocují před pravidly pro omezování rychlosti a spravovanými sadami pravidel v pořadí spouštění.

Vystavení výzvě požadavků, které nejsou od botů, na endpointech formulářů

Vytvořte vlastní pravidlo, které prověří požadavky POST na koncové body vašich formulářů ze zdrojů, jež nejsou ověřenými roboty.

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

    Přejděte na Bezpečnostní pravidla ↗
  2. Vyberte Vytvořit pravidlo > Custom rules.

  3. Zadejte název pravidla (například "Challenge u odesílání spamových formulářů").

  4. V části Když příchozí požadavky odpovídají, vyberte Edit expression a zadejte:

    (http.request.uri.path eq "/contact" and http.request.method eq "POST" and not cf.client.bot)

    Nahraďte /contact s cestou k endpointu vašeho formuláře. not cf.client.bot klauzule vyjímá ověřené roboty (například prohledávače vyhledávačů) z pravidla.

  5. V části Poté proveďte akci, vyberte Managed Challenge.

    Začněte s Managed Challenge a sledujte, které požadavky jsou označeny, než přepnete na Block.

  6. Vyberte Nasadit.

Po nasazení zkontrolujte Security Events a zkontrolujte, zda pravidlo odpovídá legitimnímu provozu. Pokud jsou legitimní uživatelé vyzýváni k ověření, zužte výraz nebo přepněte na méně agresivní akci.

Zapněte ochranu proti botům

Bot Fight Mode vystavuje výzvě požadavky, které odpovídají známým vzorcům botů, napříč celou doménou. Je dostupný ve všech plánech a kromě zapnutí nevyžaduje žádnou další konfiguraci.

  1. V dashboardu Cloudflare přejděte na Security Settings stránce.

    Přejděte na Nastavení ↗
  2. Filtrovat podle Provoz botů.

  3. Přejděte na Bot fight mode.

  4. Zapněte Bot fight mode zapnuto.

Bot Fight Mode chrání celou vaši doménu bez omezení na jednotlivé endpointy. Vlastními pravidly nelze vytvořit výjimky, kterými by šlo Bot Fight Mode obejít.

Sledování koncových bodů formulářů

Po nasazení Turnstile, pravidel pro omezování četnosti požadavků a pravidel Application Security sledujte koncové body formulářů, abyste ověřili, že pravidla fungují, a odhalili nové vzorce útoků.

Zkontrolujte Security Events

Security Events zobrazuje požadavky, na které bezpečnostní produkty Cloudflare zareagovaly nebo je označily, včetně blokování, výzev a přeskočení. Filtrujte podle cest koncových bodů formuláře a zjistěte, co je blokováno a co projde. Vysoký počet blokovaných nebo vyzvaných požadavků na cesty formuláře potvrzuje, že pravidla jsou aktivní.

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

    Přejděte na Analytics ↗
  2. Vyberte Události kartě.

  3. Použijte Přidat filtr tlačítko, kterým zúžíte výsledky na provoz vašeho koncového bodu formuláře.

  4. Zkontrolujte vzorek protokolů. U každé události ověřte:

    • Provedená akce: Zda byl požadavek zablokován, prověřen nebo povolen
    • Zdroj: Pravidlo nebo funkce, která akci vyvolala
    • IP adresa: Zda jedna IP adresa generuje velké množství událostí
    • Cesta URI: Zda požadavky cílí konkrétně na koncové body vašich formulářů

Pokud jsou legitimní uživatelé vyzýváni k ověření, zužte výraz pravidla nebo zvolte méně agresivní akci.

Nastavte upozornění na bezpečnostní události

Nastavte notifikaci, abyste dostávali upozornění při neobvyklém nárůstu bezpečnostních událostí ve vaší doméně.

Typy upozornění, spouštěcí prahové hodnoty a pokyny k nastavení najdete v Upozornění na bezpečnostní události.

Zapněte monitorování zdrojů na straně klienta

Pokud se do stránky s formulářem vloží skript třetí strany, může odcizit odeslaná data, včetně platebních údajů. Client-Side Security sleduje skripty třetích stran na vašich stránkách a upozorní na změny i případné útoky na dodavatelský řetězec.

Chcete-li povolit monitorování:

  1. V dashboardu Cloudflare přejděte na Security Settings stránce.

    Přejděte na Nastavení ↗
  2. (Volitelné) Filtrujte podle Zneužití na straně klienta.

  3. Zapněte Průběžné monitorování skriptů.

Po zapnutí zkontrolujte zjištěné skripty na stránce Webová aktiva stránku v části Zdroje na straně klienta kartu a identifikujte neočekávané skripty na stránkách s formuláři. Kompletní postup nastavení najdete v Začínáme se zabezpečením na straně klienta.

Turnstile

Zabezpečení aplikace

Boti

Zabezpečení na straně klienta