Blog · 2 luglio 2026

Quando il rate limiting diventa un problema di sicurezza

Un rate limiter è un controllo di sicurezza. Se è realizzato nel posto sbagliato può diventare la debolezza.

Il caso

Un'API in produzione mostrava un comportamento curioso nei test di carico. A bassa concorrenza (da 10 a circa 160 utenti) la latenza al 95° percentile era di circa 20 secondi. Oltre i 170-290 utenti scendeva a circa 50 ms. Gli errori non aumentavano e il throughput restava stabile. Le richieste autenticate e anonime si comportavano allo stesso modo.

Cosa hanno mostrato le evidenze

Lo slow log del server applicativo mostrava decine di worker bloccati nello stesso punto: una query al database dentro un middleware globale. Il middleware girava a ogni richiesta, prima dell'autorizzazione e di qualsiasi controller, comprese le richieste destinate a finire in un 401. La query realizzava il rate limiting contando le righe di una tabella di log negli ultimi 60 secondi, con una condizione OR su client e IP e diversi join.

Con pochi worker, ogni richiesta aspettava la stessa query e il pool veniva serializzato. Con più concorrenza la contesa si distribuiva su più connessioni, ed è per questo che i numeri miglioravano al crescere del carico.

Perché è un problema di sicurezza

  • Un chiamante non autenticato poteva causare lavoro sul database a ogni richiesta.
  • Poche richieste bastavano a degradare il servizio: era possibile un denial of service a basso volume.
  • Il controllo pensato per limitare gli abusi era il modo più economico per provocarli.

Cosa è stato raccomandato

  1. Eliminare le query al database dal middleware globale e rispondere subito alle richieste non autorizzate.
  2. Spostare il conteggio su un archivio in memoria come Redis, con incremento atomico e scadenza a 60 secondi, a costo costante per richiesta.
  3. Tenere autenticazione e logica di business in middleware separati e rendere il middleware privo di stato.

Cosa verificare sulla tua API

Esegui un test di carico anche a bassa concorrenza, non solo ad alta. Controlla cosa accade prima dell'autenticazione. Chiediti cosa fa fare al tuo database un chiamante anonimo.

Basato su un intervento reale, con i dettagli rimossi. Le correzioni indicate erano raccomandazioni: qui non riportiamo risultati misurati.

Questo articolo è la versione breve. L'analisi completa, con diagrammi, è nel white paper Il rate limiting che blocca il servizio.

Tutti gli articoli