Cloudflare Turnstile: la alternativa gratuita al CAPTCHA

Captcha y reCaptcha en sus múltiples versiones e implementaciones es -estadísticamente- una de las soluciones más implementadas dentro de las páginas web en todo lo concerniente a la validación de usuarios para protegerse del temido spam.

Un CAPTCHA o Completely Automated Public Turing test to tell Computers and Humans Apart es un tipo de medida de seguridad conocida como autenticación pregunta-respuesta. Protege del spam y del descifrado de contraseñas mediante una prueba que demuestre que quien responde es un humano y no un ordenador.

Su evolución ha pasado de mostrar la suma de dos simples dígitos y tener que escribir su resultado, a responder preguntas más complejas, escribir palabras que costaba Dios y ayuda leer y acabando por los inefables cuadros con múltiples imágenes donde hay que señalar las que presentan similitudes, en interminables tandas que suelen acabar con nuestra paciencia y agudeza visual. Aquí tenéis una completa explicación al respecto.

Si que es cierto que la propia Google (tras haber adquirido la tecnología CAPTCHA) término por diseñar el citado reCAPTCHA (2014) donde una serie de algoritmos analizan datos como la IP y cookies activas para decidir si somos humanos. El resultado desembocó en calidad de vida para los sufridos usuarios a la hora de validarse, pero presenta dos problemas:

  • En caso de duda, nos remite al Captcha tradicional.
  • La privacidad brilla por su ausencia.

Y aquí es donde aparece la solución ofertada por Cloudflare Turnstile.

Grosso modo, vendría a ser el reCaptcha de Google menos intrusivo y totalmente respetuoso con la privacidad -Cloudflare dixit.

Cloudflare Turnstile se basa en la implementación Cloudflare Managed Challenge (Desafío gestionado por Cloudflare):

Managed Challenge, adapta el resultado real del desafío al visitante/navegador individual. Como resultado, podemos ajustar la dificultad del desafío en sí y evitar mostrar rompecabezas visuales a más del 90% de las solicitudes humanas, mientras que al mismo tiempo presenta desafíos más difíciles para los visitantes que exhiben comportamientos no humanos.

Cuando un visitante se encuentra con un Desafío administrado, primero ejecutamos una serie de pequeños desafíos de JavaScript no interactivos que recopilan más señales sobre el entorno de visitante/navegador. Esto significa que implementamos detecciones y desafíos en el navegador en el momento en que se realiza la solicitud. Los desafíos se seleccionan en función de las características que emite el visitante y en función de la información inicial que tenemos sobre el visitante. Esos desafíos incluyen, entre otros, prueba de trabajo, prueba de espacio, sondeo de API web y varios desafíos para detectar consultas de navegador y comportamiento humano.

También incluyen modelos de aprendizaje automático que detectan características comunes de los visitantes finales que pudieron pasar un CAPTCHA antes. La dureza computacional de esos desafíos iniciales puede variar según el visitante, pero está destinada a funcionar rápidamente.

Después de que se hayan ejecutado nuestros desafíos no interactivos, evaluamos las señales recopiladas. Si por la combinación de esas señales estamos seguros de que el visitante es probablemente humano, no se toman más medidas, y el visitante es redirigido a la página destinada sin ninguna interacción requerida. Sin embargo, en algunos casos, si la señal es débil, presentamos un rompecabezas visual al visitante para demostrar su humanidad.

El resultado final de todo esto es que, una vez implementado, veremos aparecer una animación de Cloudflare para informarnos de que está realizando la comprobación bot <-> humano y el correspondiente “check” verde caso de pasar la validación o un Captcha tradicional en caso contrario.

Su implementación es muy sencilla y con varias opciones:

  • Código HTML (Disponible en la web de Cloudflare)
  • Plugins o extensiones para diversos CMD (WordPress, Joomla…)

En el segundo caso, obviamente dependeremos de que terceros hayan creado dichos plugins o extensiones. Aquí adjunto uno para WordPress.

Una solución igual o tan buena como el reCAPTCHA de Google pero mucho más respetuosa con la privacidad.