Saltar al contenido principal

Cloudflare Turnstile

Airspace utiliza Cloudflare Turnstile para proteger los formularios públicos de bots y abuso automatizado. Turnstile proporciona protección similar a CAPTCHA con mínima fricción para el usuario — la mayoría de los visitantes nunca verán un desafío.

Formularios Protegidos

Turnstile está activo en las siguientes páginas:

  • Inicio de sesión — previene ataques de relleno de credenciales
  • Registro — previene la creación masiva de cuentas
  • Incorporación (creación pública de tenant) — previene el aprovisionamiento automatizado de tenants

Configuración

1. Obtener Claves de Turnstile

  1. Inicie sesión en su panel de Cloudflare
  2. Navegue a Turnstile en la barra lateral
  3. Haga clic en Add site
  4. Ingrese el nombre de su sitio y dominio(s)
  5. Elija el modo del widget (se recomienda Managed)
  6. Copie la Site Key y la Secret Key

2. Configurar Variables de Entorno

Agregue lo siguiente a su archivo .env:

TURNSTILE_ENABLED=true
TURNSTILE_SITE_KEY=su-site-key-aqui
TURNSTILE_SECRET_KEY=su-secret-key-aqui

3. Desplegar

No se necesitan pasos adicionales. El widget de Turnstile aparecerá automáticamente en los formularios protegidos.

Deshabilitar Turnstile

Para deshabilitar Turnstile (por ejemplo, para desarrollo), establezca:

TURNSTILE_ENABLED=false

Cuando está deshabilitado:

  • El widget no se renderiza en ningún formulario
  • La validación del lado del servidor se omite (siempre pasa)
  • No se realizan solicitudes a Cloudflare

Solución de Problemas

SíntomaCausaSolución
El widget no apareceTURNSTILE_ENABLED es false o falta la site keyVerifique los valores en .env
Error "La verificación CAPTCHA falló"Token expirado o secret key inválidaVerifique que TURNSTILE_SECRET_KEY coincida con su panel de Cloudflare
Los formularios funcionan pero no hay widgetJavaScript bloqueadoAsegúrese de que challenges.cloudflare.com no esté bloqueado por CSP o bloqueadores de anuncios
La verificación falla después de larga inactividadLos tokens de Turnstile expiran después de ~5 minutosEl widget se auto-actualiza; si los problemas persisten, recargue la página