Korzen
Bot Protection

Widgets en otros sitios

Un widget que tus clientes insertan en sus propios sitios, como un formulario de reservas, una tienda o una taquilla: el tag en su frame, el token que envía tu página y qué dominios cuentan.

Un widget corre en sitios que no son tuyos: tus clientes insertan tu formulario de reservas, tienda o taquilla en sus páginas. Bot Protection funciona ahí también, con tres cosas que hacer bien: dónde corre el tag, cómo llega el token a tu servidor y qué dominios cuenta tu plan.

En un frame en tu propio dominio (recomendado)

Sirve el widget desde tu dominio y deja que tus clientes lo inserten en un <iframe>. Pon el tag en la página dentro del frame, como en cualquier página tuya. Bot Protection ve entonces tu dominio, sea cual sea el sitio que lo inserta: un dominio para tu plan, comprobado como cualquier otro (tu página de inicio lleva el tag, o lo añades en la página Set-up).

En un frame, las cookies de tu página son de terceros. Chrome, Edge y Firefox las guardan aparte para cada sitio que te inserta, y Safari no guarda ninguna. Así que no dependas de la cookie _kz ahí: antes de la acción protegida, toma el token del tag y envíalo tú.

const token = await window.korzen?.ready();
await fetch("/api/book", {
  method: "POST",
  headers: { "content-type": "application/json", "x-korzen-token": token || "" },
  body: JSON.stringify(order),
});

En tu servidor, pasa ese header a la llamada como su token, por encima de la cookie:

const input = fromNodeRequest(req, { ip: (_get, r) => r.ip, path: "/api/book" });
input.token = req.get("x-korzen-token") || input.token;
const decision = await korzen.decide(input);

Todos los SDK y la llamada desde tu servidor aceptan un campo token igual. El almacenamiento de un frame también se guarda aparte por sitio, así que el mismo visitante en dos sitios de tus clientes son dos dispositivos para Bot Protection. Es una señal ausente, nunca evidencia de un bot.

La página de desafío y los frames

La página de desafío devuelve al visitante con una cookie que un frame no guarda. Dentro de un frame, responde a challenge con un paso tuyo (tu CAPTCHA, una verificación por email o teléfono) y deja require_token fuera de las acciones del frame. Mira monitor mode y block mode para lo que significa cada acción.

Un script en la página de tu cliente

Un widget que es un script que tus clientes pegan, sin frame, corre en su página. Entonces el tag corre en su dominio, cada dominio de tus clientes cuenta en tu plan, y sus páginas deben llevar el tag con tu site key. Tu script llama a tu servidor desde otro origen, donde no se envían cookies: envía el token en el header como arriba y permite x-korzen-token en tu respuesta CORS.

Los hostnames de tus clientes

Un hostname que tu cliente apunta hacia ti (tickets.sutienda.com, un CNAME) es su dominio: cuenta como uno de los dominios de tu plan, como el script de arriba. Los planes protegen hasta cinco; con más hostnames de tus clientes, sirve el widget en un frame en tu dominio, o escríbenos.