Cloudflare Turnstile: cómo frenar el spam en formularios sin CAPTCHA molestos
Turnstile comprueba que el visitante es humano sin rompecabezas de imágenes, pero solo si su servidor valida cada token. Así se elige el modo, se conecta y se combina con rate limiting y honeypots.
Si el formulario de contacto, la página de inicio de sesión o el registro de su sitio web se están llenando de basura, Cloudflare Turnstile es una de las soluciones más sencillas: comprueba que el visitante es humano sin obligar a nadie a hacer clic en semáforos, está disponible en el plan Free de Cloudflare y no exige trasladar su sitio web ni su DNS a Cloudflare. La condición es que solo funciona si su servidor verifica cada token con la API Siteverify de Cloudflare. Agregar el widget a la página y quedarse ahí deja la puerta abierta. Esta guía explica cómo funciona Turnstile, qué modo elegir, cómo conectarlo correctamente y con qué complementarlo.
Qué es Turnstile (y en qué se diferencia de los CAPTCHA de imágenes)
Los CAPTCHA tradicionales piden leer texto distorsionado o elegir imágenes. Frustran a los clientes, hacen más lentos los formularios en el teléfono y pueden ser una barrera para quienes usan lectores de pantalla. Turnstile funciona de otra manera. Según la documentación de Cloudflare, ejecuta pequeñas comprobaciones de JavaScript en el navegador, casi siempre sin interacción, y solo muestra una casilla sencilla cuando necesita más certeza. No hay imágenes ni textos que descifrar.
Algunos puntos que importan para el sitio web de una empresa:
- No requiere el proxy de Cloudflare. Cloudflare indica que Turnstile se puede insertar en cualquier sitio "sin enviar el tráfico a través de Cloudflare". Su sitio puede seguir con su hosting y su proveedor de DNS actuales.
- Límites del plan Free. La página de planes de Turnstile indica hasta 20 widgets en el plan Free, 10 nombres de host por widget, desafíos ilimitados y 7 días de analíticas. Eso cubre a la mayoría de las pequeñas y medianas empresas.
- Accesibilidad. Cloudflare indica que Turnstile cumple con WCAG 2.2 AA, una mejora importante frente a los CAPTCHA de rompecabezas.
- Privacidad. Cloudflare afirma que Turnstile no accede, almacena ni transmite lo que se escribe en los formularios ni otros datos de la página. Sus prácticas de datos se describen en un anexo de privacidad de Turnstile (Turnstile Privacy Addendum).
Cómo elegir el modo del widget
Al crear un widget en el panel de Cloudflare, usted elige uno de tres modos. Cada widget tiene su propia sitekey (pública, va en la página) y su clave secreta (privada, se queda en su servidor).
| Modo | Lo que ve el visitante | Uso recomendado |
|---|---|---|
| Managed (recomendado) | Normalmente nada; una casilla solo si el visitante parece riesgoso | Formularios de contacto, de cotización y de registro |
| Non-interactive | Un pequeño widget con un indicador de carga; nunca pide un clic | Formularios donde quiere una señal visible pero sin un paso extra |
| Invisible | Nada; las comprobaciones se hacen en segundo plano | Páginas de inicio de sesión y procesos de pago donde cualquier elemento visible estorba |
Dos notas prácticas de la documentación de widgets de Cloudflare:
- Si usa el modo Invisible, debe mencionar el Turnstile Privacy Addendum de Cloudflare en su propia política de privacidad.
- Si su sitio usa una Content Security Policy (CSP), debe permitir conexiones a
challenges.cloudflare.com; de lo contrario, el widget no cargará y no verá ningún aviso.
Para la mayoría de las empresas, el modo Managed es la opción adecuada. Use widgets distintos para fines distintos (por ejemplo, uno para el formulario de contacto del sitio y otro para el inicio de sesión del portal de clientes), así podrá revisar sus analíticas por separado y cambiar las claves de forma independiente.
El paso que muchos omiten: la validación en el servidor
Así funciona realmente un formulario protegido con Turnstile:
- El widget se ejecuta en el navegador del visitante y genera un token.
- El token se envía junto con el formulario (por defecto en un campo oculto llamado
cf-turnstile-response). - Su servidor envía ese token, junto con su clave secreta, al endpoint Siteverify de Cloudflare:
POST https://challenges.cloudflare.com/turnstile/v0/siteverify. - Cloudflare responde si el token es válido. Solo entonces su servidor debe aceptar el formulario.
Si falta el paso 3, un bot puede enviar datos directamente a su formulario sin cargar nunca el widget. La documentación de Cloudflare es clara: los tokens deben validarse en el servidor. Algunas reglas que conviene incorporar:
- Los tokens vencen a los 300 segundos (5 minutos). Un visitante que deja el formulario abierto mucho tiempo recibirá un error
timeout-or-duplicate. Su página debe renovar el widget (con la funciónturnstile.resetde Cloudflare) en lugar de mostrar un fallo confuso. - Cada token se puede validar una sola vez. Un token reutilizado se rechaza. Eso es intencional: impide que un desafío resuelto se use en miles de envíos.
- Mantenga la clave secreta en el servidor. Nunca la ponga en JavaScript, en un repositorio público ni en un archivo de configuración del front-end. Si se filtra, cámbiela en el panel.
- Envíe la IP del visitante en el campo opcional
remoteipcuando la tenga, y use el campo opcionalidempotency_keysi su código puede reintentar una solicitud. - Falle de forma segura. Si Siteverify responde
internal-error, reintente una vez. Decida de antemano si un formulario se acepta y se marca para revisión o se rechaza cuando no se puede contactar a Cloudflare, y registre la decisión en ambos casos. - Revise los códigos de error.
invalid-input-secretsuele indicar una clave mal escrita o ya cambiada;missing-input-responsesignifica que el token nunca llegó a su servidor, a menudo porque un constructor de páginas eliminó el campo oculto.

WordPress: opciones de plugins
En WordPress no necesita programar la integración, pero conviene elegir con cuidado:
- Plugins dedicados a Turnstile. Plugins como "Simple CAPTCHA with Cloudflare Turnstile" (publicado en WordPress.org) agregan el widget a los formularios de inicio de sesión, registro, restablecimiento de contraseña y comentarios de WordPress, al pago de WooCommerce y a constructores de formularios populares como WPForms, Contact Form 7 y Gravity Forms. Su descripción aclara que no está afiliado a Cloudflare; lo mismo ocurre con otros plugins de Turnstile, así que trátelos como cualquier plugin de terceros.
- Constructores de formularios con soporte integrado. Algunos plugins de formularios incluyen una opción de Turnstile en su propia configuración. Si el suyo la tiene, úsela en lugar de agregar otro plugin.
Elija lo que elija, pruébelo bien: envíe un formulario de forma normal y luego otro sin el campo de Turnstile (su desarrollador puede hacerlo con las herramientas de desarrollo del navegador). El segundo envío debe rechazarse. Si se acepta, la validación en el servidor no está funcionando. Y mantenga el plugin actualizado: como explicamos en nuestra guía para limpiar sitios web hackeados, los plugins desactualizados son una vía de entrada frecuente.
Turnstile es una capa, no todo el muro
Turnstile le indica que hubo un navegador real de por medio. No detiene a una persona decidida a escribir spam a mano, ni protege rutas que no pasan por sus formularios. Combínelo con lo siguiente:
Limitación de solicitudes (rate limiting)
Si su sitio pasa por el proxy de Cloudflare, una regla de rate limiting puede frenar los accesos repetidos a /wp-login.php, /contact o una ruta de API. La documentación de Cloudflare indica una regla de rate limiting en el plan Free (contando por IP en un periodo de 10 segundos), dos en Pro y cinco en Business. En las páginas de inicio de sesión, aplique además bloqueos o demoras de cuenta en la propia aplicación. Nuestro artículo sobre cómo proteger su sitio web con el WAF de Cloudflare trata las reglas de firewall con más detalle.
Campos trampa (honeypot)
Un honeypot es un campo oculto del formulario que las personas nunca ven ni llenan. Los bots simples llenan todos los campos, así que cualquier envío con ese campo completo se puede descartar sin aviso. No cuesta nada, no agrega fricción y detecta un tipo de bot distinto al que detecta Turnstile.
Comprobaciones en el servidor
- Valide y limite la longitud de cada campo.
- Rechace los envíos con decenas de enlaces en el mensaje.
- Nunca envíe respuestas automáticas que repitan el mensaje del visitante, porque los spammers las aprovechan para distribuir contenido a través de su dominio.
Autenticación fuerte en los inicios de sesión
En los formularios de inicio de sesión, Turnstile reduce los intentos automatizados de adivinar contraseñas, pero no sustituye la autenticación multifactor. Active MFA en todas las cuentas de administrador.
Lista de implementación breve
- Cree un widget de Turnstile en el panel de Cloudflare (modo Managed) y agregue solo los nombres de host que le pertenecen.
- Guarde la clave secreta en las variables de entorno o el gestor de secretos de su servidor.
- Agregue el script y el elemento del widget a cada formulario.
- Implemente Siteverify en el servidor y rechace cualquier formulario sin un token válido.
- Gestione el vencimiento con
turnstile.resety muestre un mensaje amable para reintentar. - Actualice su Content Security Policy y, si usa el modo Invisible, su política de privacidad.
- Agregue un campo honeypot y, si usa el proxy de Cloudflare, una regla de rate limiting para las rutas de inicio de sesión.
- Pruebe tokens válidos, ausentes, vencidos y reutilizados antes de publicar.
- Revise las analíticas de Turnstile después de una semana para confirmar que los visitantes reales pasan sin problema.
¿Necesita ayuda?
Core Florida IT es un proveedor de IT independiente; no estamos afiliados a Cloudflare, pero configuramos Turnstile, rate limiting y la protección de formularios en sitios web de empresas como parte de nuestros servicios de ciberseguridad y gestión de hosting web. Si el spam, los registros falsos o los ataques al inicio de sesión le hacen perder tiempo a su equipo, solicite una evaluación de IT gratuita y revisaremos sus formularios y la seguridad de su sitio web para su empresa en Miami-Dade o el sur de Florida.


