Definizione
Il rate limiting è un controllo di gestione del traffico che impone un tetto a quanto spesso un client può eseguire una determinata azione in una finestra di tempo specificata. Quando il client supera la soglia, il server risponde con un errore — di solito HTTP 429 Too Many Requests — o scarta silenziosamente le richieste in eccesso. La finestra si resetta su uno schedule fisso (contatore “fixed window”) o su base scorrevole (contatore “sliding window”), e le finestre scorrevoli forniscono un enforcement più dolce che evita lo sfruttamento ai bordi.
Il rate limiting è uno dei controlli di sicurezza web più antichi e diffusi. OWASP (Open Web Application Security Project) lo raccomanda come difesa primaria contro brute force, credential stuffing e abuso automatico dei moduli. Cloudflare lo offre come funzionalità del proprio prodotto WAF, con regole configurabili per percorso URL, metodo HTTP, indirizzo IP, valore di cookie e header di richiesta. AWS WAF, Azure Front Door e Google Cloud Armor offrono capacità equivalenti.
Come funziona
Un rate limiter mantiene un contatore per ogni identificatore univoco di client — il più delle volte l’indirizzo IP sorgente, ma anche un identificatore di account, una API key o un cookie di sessione. All’arrivo di una richiesta, il server controlla il valore corrente del contatore per quell’identificatore. Se è sotto soglia, la richiesta passa e il contatore viene incrementato. Se è alla soglia o sopra, la richiesta viene rifiutata con risposta 429 o gestita secondo policy.
Lo storage del contatore viene tipicamente implementato in Redis o Memcached per consentire lookup veloci e distribuiti tra più istanze server — requisito per applicazioni scalate orizzontalmente. La documentazione di Cloudflare descrive l’enforcement a livello di rete edge, dove le regole si applicano prima che le richieste raggiungano l’origin, distribuendo l’alleggerimento del carico sull’infrastruttura globale di Cloudflare.
Parametri di rate limiting comuni in contesto concorso:
- Voti per IP per finestra di tempo: la configurazione più comune. Esempio: non più di 1 voto per IP per finestra di 24 ore.
- Voti per account per concorso: enforced a livello applicativo usando come chiave l’identificatore dell’utente autenticato.
- Registrazioni per IP per ora: applicato all’endpoint di creazione account per rallentare il farming di account da bot.
- Chiamate API per token al minuto: rilevante per piattaforme che espongono un’API pubblica di voto.
Il rate limiting può essere applicato anche in modo probabilistico — per esempio limiti più stretti per richieste con segnali comportamentali o di fingerprint che suggeriscono automazione, e più permissivi per sessioni con indicatori umani ad alta confidenza.
Dove lo incontri
Il rate limiting è un controllo onnipresente in praticamente ogni piattaforma web. Gli operatori di concorsi lo incontrano direttamente in tre punti: l’endpoint di invio voto, il modulo di registrazione account e (se è prevista la conferma email) la pipeline di invio email. Le integrazioni di concorso via API incontrano i limiti sugli endpoint API della piattaforma.
Per gli utenti finali si manifesta più visibilmente come errore HTTP 429 o come messaggio specifico della piattaforma, tipo “Hai già votato” o “Attendi prima di votare di nuovo”. Molte piattaforme implementano un rate limiting “morbido” — accettano la richiesta ma scartano silenziosamente il duplicato — per evitare di segnalare ai potenziali abusatori l’esistenza del controllo.
La documentazione di rate limiting WAF di Cloudflare nota che le regole possono essere impostate in modalità “log only” senza bloccare durante una fase di analisi, per poi passare a blocco una volta calibrata la soglia adeguata. Questo approccio in due fasi aiuta gli organizzatori a non bloccare per errore ondate legittime di voti.
Esempi pratici
Un concorso per food blogger imposta un limite di 24 ore per IP. Nell’ultima settimana, un votante prova a inviare 50 voti in rapida successione dallo stesso IP residenziale. Il primo viene accettato; le 49 richieste successive ricevono 429. Il browser mostra un messaggio che spiega il limite di una volta al giorno.
Una piattaforma SaaS che ospita centinaia di concorsi simultanei usa il rate limiting di Cloudflare al network edge. Un bot che colpisce un concorso con 10.000 richieste al minuto viene strozzato a un massimo di 60 al minuto al margine, e le eccedenze non raggiungono mai l’origin. I log dell’origin mostrano solo il traffico strozzato e l’uso CPU lato server resta inalterato.
Una review OWASP del minisito custom di una startup individua come vulnerabilità l’assenza di rate limiting sull’endpoint di reinvio dell’email di conferma — un attaccante potrebbe inondare la casella di una vittima generando migliaia di email. La review raccomanda un limite di 3 reinvii per indirizzo email all’ora, coerente con le linee guida OWASP per la prevenzione brute force.
Concetti correlati
Il rilevamento anomalie è un complemento più sofisticato al rate limiting: dove il rate limiting impone soglie rigide, il rilevamento anomalie individua deviazioni da una baseline comportamentale appresa, intercettando campagne fraudolente che restano appena sotto i limiti fissi. La diversità ASN diventa rilevante quando i limiti sono per IP e un attore distribuisce le richieste su molti IP per restare sotto soglia per IP — l’analisi a livello ASN scopre il pattern aggregato. reCAPTCHA v3 offre un punteggio di rischio comportamentale combinabile con il rate limiting per applicare limiti più stretti alle sole sessioni che ottengono punteggi compatibili con automazione.
Limiti e avvertenze
Il rate limiting per IP è meno efficace in ambienti carrier-grade NAT, dove un singolo IP pubblico può rappresentare centinaia di abbonati mobili legittimi. Un limite di 1 voto per IP ogni 24 ore impedirebbe per errore di votare alla maggior parte di loro. Per questo, il rate limiting nelle piattaforme di concorso va stratificato con deduplica per account o cookie quando il pubblico mobile è significativo. Inoltre, limiti troppo aggressivi possono peggiorare l’esperienza dei votanti che arrivano da reti condivise come campus universitari, uffici aziendali o grandi hotspot Wi-Fi pubblici.