Dokumentace Domluvit pilot

Příklad pravidel zmírnění

Vrátit vlastní chybu, když se uživatel zeptá na násilný nebo nenávistný obsah

Chatbot zákaznické podpory by neměl reagovat na prompty týkající se násilných trestných činů nebo nenávistných projevů. Toto vlastní pravidlo blokuje požadavek a vrací odpověď JSON, kterou vaše aplikace může analyzovat a zobrazit uživateli.

Vaše aplikace může zkontrolovat odpověď jinou než 200 a zobrazit message pole uživateli, čímž zachováte konverzační charakter zážitku místo zobrazení holé blokovací stránky.

Blokování pokusů o prompt injection z automatizovaných zdrojů mimo vaši zemi

Toto pravidlo kombinuje funkce AI Security for Apps skóre injekcí hodnotou Bot Management a zemí, ze které požadavek pochází, abyste se zaměřili na útoky s vysokou mírou jistoty pocházející z automatizovaných zdrojů. Tento vrstvený přístup výrazně snižuje míru falešně pozitivních výsledků oproti použití jediného signálu samostatně.

Pravidlo cílí na požadavky, které jsou současně:

  1. Pravděpodobné pokusy o prompt injection (skóre pod 25).
  2. Pochází z automatizovaných nástrojů, nikoli ze skutečného prohlížeče (skóre bota nižší než 10).
  3. Pochází mimo USA, upravte kód země podle toho, kde se nacházejí vaši uživatelé.

Samotný jednotlivý signál může způsobit falešně pozitivní výsledky. Společně ale identifikují vzor silně spojený s automatizovanými útoky typu prompt injection.

Povolit finanční osobní údaje (PII) pouze z vaší interní sítě

Aplikace finančních služeb běžně zpracovává čísla kreditních karet a bankovních účtů od interních agentů, ale u externích uživatelů by měla tyto typy PII blokovat. Toto pravidlo využívá u požadavku číslo autonomního systému (ASN) k rozlišení interního provozu od veřejného provozu.

Interní agenti ve vaší firemní síti (identifikovaní podle ASN) mohou v rámci svého pracovního postupu odesílat AI asistentovi finanční osobní údaje (PII), zatímco externí uživatelé jsou blokováni. Toto nastavení můžete dále upřesnit kombinací s Access tokeny služby nebo mTLS pro silnější ověření identity.

Zpracování blokovacích odpovědí ve vaší aplikaci

Když pravidlo WAF zablokuje požadavek, Cloudflare odešle blokovací odpověď zpět vaší aplikaci, nikoli koncovému uživateli. Vaše aplikace musí tuto odpověď zpracovat a rozhodnout, co zobrazit. Bez zpracování chyb mohou uživatelé vidět neupravenou chybovou stránku HTML nebo nefunkční uživatelské rozhraní.

Zde jsou dvě věci, které můžete udělat, abyste zajistili plynulý provoz.

Nastavte záložní zprávu

Definujte přívětivou výchozí zprávu, kterou vaše aplikace zobrazí vždy, když obdrží neúspěšnou odpověď. Funguje to bez ohledu na to, jak je blokovací pravidlo nakonfigurováno, včetně výchozí blokovací stránky Cloudflare, která vrací HTML, jež by jinak narušilo uživatelské rozhraní chatu založené na JSON.

// Define a user-friendly fallback message. This is what the user will see
// any time the request is blocked or something unexpected happens.
const FALLBACK = "Sorry, I can't process that request. Please try rephrasing.";

const resp = await fetch("/api/chat", {
	method: "POST",
	headers: { "Content-Type": "application/json" },
	body: JSON.stringify({ prompt: userMessage }),
});

// If the response is not 2xx, show the fallback instead of trying to parse
// the body. This safely handles the default Cloudflare block page (which is
// HTML) without breaking your UI.
if (!resp.ok) {
	await resp.text(); // consume the body so the connection is released
	showError(FALLBACK);
	return;
}

const data = await resp.json();
showMessage(data.message);

Zobrazení vlastních chybových zpráv z WAF

Pro větší kontrolu nakonfigurujte svá pravidla blokování pomocí vlastní odpověď JSON , například { "message": "That question is outside this assistant's scope." }. Vaše aplikace pak může odpověď zpracovat a zobrazit vlastní zprávu, pokud je k dispozici, jinak použije výchozí zprávu.

const FALLBACK = "Sorry, I can't process that request. Please try rephrasing.";

const resp = await fetch("/api/chat", {
	method: "POST",
	headers: { "Content-Type": "application/json" },
	body: JSON.stringify({ prompt: userMessage }),
});

if (!resp.ok) {
	// Check the content type to determine if the response contains a custom
	// JSON error from your WAF rule, or something else (like the default
	// Cloudflare HTML block page, or a DDoS / Bot Management challenge).
	const ct = (resp.headers.get("content-type") || "").toLowerCase();

	if (ct.includes("application/json")) {
		// The WAF returned your custom JSON response. Parse it and show the
		// message you configured in the rule. Fall back to the default if the
		// field is missing or empty.
		const data = await resp.json();
		showError(data.message || FALLBACK);
	} else {
		// The response is not JSON — most likely the default Cloudflare HTML
		// block page. Discard the body and show the friendly fallback.
		await resp.text();
		showError(FALLBACK);
	}
	return;
}

const data = await resp.json();
showMessage(data.message);

Požádejte o pilot zdarma

Domluvit pilot