Cloudflare Turnstile vs reCAPTCHA: confronto e migrazione

Cloudflare Turnstile vs reCAPTCHA: confronto e migrazione

Cloudflare Turnstile è la soluzione CAPTCHA lanciata da Cloudflare nel 2022 come alternativa privacy-friendly a Google reCAPTCHA. La grande differenza: Turnstile è invisibile alla maggior parte degli utenti (nessun "clicca le immagini con il semaforo"), non traccia gli utenti per finalità pubblicitarie, ed è completamente gratuito senza limiti di volume. Per chi vuole rispettare GDPR e fornire migliore UX, Turnstile è la scelta moderna.

Differenze chiave con reCAPTCHA

reCAPTCHA v2 (checkbox + immagini) crea attrito UX significativo. reCAPTCHA v3 (score-based) è invisibile ma richiede sviluppatori per gestire score. Entrambi i prodotti Google profilano utenti per scopi pubblicitari. Turnstile è invisibile by default, usa challenge non-interattivi (proof of work, browser test), non profila per pubblicità, fornisce token verificabili come reCAPTCHA. È compatibile a livello concettuale con reCAPTCHA v2 invisible.

Procedura passo-passo

  1. Vai su dash.cloudflare.com/turnstile.
  2. Clicca Add site e inserisci nome e domini autorizzati.
  3. Scegli modalità widget: Managed (auto), Non-interactive (challenge silenziosa), Invisible (zero UI).
  4. Annota Site Key e Secret Key generati.
  5. Nel HTML del form aggiungi script: <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" defer></script>.
  6. Aggiungi widget container: <div class="cf-turnstile" data-sitekey="TUA_SITE_KEY"></div>.
  7. Al submit del form raccogli il token: document.querySelector('[name=cf-turnstile-response]').value.
  8. Lato server verifica il token chiamando https://challenges.cloudflare.com/turnstile/v0/siteverify.
  9. Includi secret key e response token nella richiesta POST.
  10. Procedi solo se la risposta JSON ha success: true.

Modalità widget

Managed: Cloudflare decide automaticamente il tipo di challenge in base al rischio percepito. Default raccomandato. Non-interactive: mostra sempre un piccolo widget con animazione (zero clic richiesti). Invisible: completamente invisibile per utenti, ideale per non interferire con UX di form complessi. La differenza tra le modalità è solo estetica; la sicurezza è identica.

Verifica lato server

Dopo il submit, il server deve verificare il token chiamando l'API Cloudflare. Esempio in PHP: $ch = curl_init('https://challenges.cloudflare.com/turnstile/v0/siteverify'); con POST containing secret + response. La risposta JSON include success bool, hostname verificato, action e cdata custom. Solo se success=true e hostname corrisponde, accetta il form. Questo verifica end-to-end è essenziale.

Errori comuni e come risolverli

  • Token invalid: token già usato (single-use) o scaduto (300 secondi). Verifica subito dopo submit.
  • Widget non si carica: dominio non autorizzato. Aggiungi nel Turnstile settings.
  • Conflitto CSP: Content-Security-Policy blocca challenges.cloudflare.com. Aggiungi a script-src e frame-src.
  • Falso negativo eccessivo: utenti con VPN bloccati. Modalità Managed dovrebbe gestire meglio.
  • Verifica server fallisce sempre: secret key mancante o errata. Rigenera e configura.

Migrazione da reCAPTCHA

La migrazione è semplice perché l'API è simile a reCAPTCHA v2 invisible. 1) Cambia src dello script e endpoint server verify. 2) Sostituisci data-sitekey con quella Turnstile. 3) Aggiorna server-side: URL siteverify e parametro response al posto di g-recaptcha-response. 4) Test in staging. 5) Deploy. Tempo medio per migrazione di un form: 30 minuti. Per più form considera abstrazione in helper centralizzato.

Limiti e considerazioni

Turnstile è gratuito senza limiti pratici di volume (milioni di chiamate/giorno). Disponibile su Free e tutti i piani. Funziona su qualsiasi sito, indipendente da Cloudflare CDN. L'unico requisito è connessione internet del client (script caricato da challenges.cloudflare.com). Limitazione: Turnstile non funziona perfettamente con utenti dietro corporate proxy che strippano JS o con browser molto vecchi senza Web Crypto API.

Privacy e compliance

Turnstile è progettato per essere GDPR-compatibile: nessun cookie identificativo, nessuna profilazione per pubblicità, dati minimi raccolti solo per anti-frode. Confronto con reCAPTCHA: Google ammette di usare segnali reCAPTCHA per servizi pubblicitari. Per siti con utenti europei e attenzione alla privacy Turnstile è oggettivamente migliore. Cloudflare ha pubblicato whitepaper compliance scaricabili.

Domande frequenti

D: Turnstile funziona anche senza Cloudflare CDN sul dominio?
R: Sì, è un servizio standalone.

D: Posso usarlo su WordPress?
R: Sì, esistono plugin dedicati Turnstile per i form comuni (Contact Form 7, WPForms).

D: Quanto costa al mese?
R: Completamente gratuito senza tier paid.

D: Score-based come reCAPTCHA v3?
R: Non esposto direttamente, ma puoi usare actions diverse per percorsi diversi.

Considerazioni operative finali

Quando applichi una configurazione di questo tipo in produzione è sempre buona norma seguire un'approccio incrementale: parti con un test su staging, monitora gli effetti per qualche giorno, poi estendi gradualmente al traffico live. La rete Cloudflare elabora ogni cambiamento in pochi secondi a livello globale, quindi le modifiche sono effettive quasi immediatamente, ma gli effetti collaterali su utenti reali possono richiedere ore o giorni per emergere. Annota nel runbook interno data, motivo e parametri di ogni modifica significativa. Una documentazione precisa accelera enormemente il troubleshooting futuro e facilita il passaggio di consegne tra membri del team.

Vale anche la pena ricordare che Cloudflare aggiorna frequentemente l'interfaccia del dashboard e le posizioni delle voci di menu. La logica e le funzionalità descritte in questa guida restano valide, ma il percorso esatto per raggiungere ogni opzione può variare leggermente nel tempo. In caso di difficoltà a trovare una specifica voce, utilizza la barra di ricerca interna del dashboard oppure consulta la documentazione ufficiale aggiornata. La community Cloudflare sul forum ufficiale e su Stack Overflow è inoltre molto attiva e offre spesso risposte rapide a problemi specifici di configurazione.

Per progetti complessi che coinvolgono più servizi Cloudflare contemporaneamente (CDN, Workers, WAF, Access, R2) conviene strutturare la configurazione come codice tramite Terraform o Pulumi. Questo permette versioning, code review, rollback atomici e deploy ripetibili tra environment. Per team con esigenze più semplici la gestione manuale via dashboard resta perfettamente valida, soprattutto se accompagnata da una checklist scritta delle impostazioni applicate. La scelta dell'approccio dipende dalle dimensioni del progetto e dal grado di automazione desiderato. L'importante è essere consistenti e mantenere tracciabilità delle modifiche effettuate.

Hai bisogno di aiuto?

Se vuoi configurare Cloudflare per il tuo sito con il team di G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?