forumApri un argomento

La nostra API mobile accetta chiamate illimitate — che rate limit dovrei impostare?

JJülide A***9 mesi fa·36 messaggi·14,5K visualizzazioni#api#rate limit#sicurezza
JJülide A***PartecipanteMembro della community
Iscrizione
ago 2024
Messaggio
1
#1

Non c'è rate limit sugli endpoint dell'API. I bot inviano milioni di richieste rallentando il server. Quante richieste al secondo dovrebbero essere consentite?

Come si imposta il rate limit? Si restituisce info negli header? Come avvisiamo lo sviluppatore dell'app mobile?

Ci sono le API key ma tutti usano la stessa. Dovrei impostare un rate limit per utente?

DDoki ekibiTeam Doki
Ruolo
Account ufficiale
Settore
Sicurezza informatica e digitale
Tipo di organizzazione
Doki
Iscrizione
mar 2023
Messaggio
310
Più utile#2

API Rate Limiting (Limitazione della frequenza): prevenzione DDoS + protezione da abusi. Limiti: 1) Globale (a livello server): 10000 req/min, 2) Per utente/API key: 100 req/min, 3) Per endpoint: GET /users 1000/min, POST /users 100/min. Tipi: 1) Fixed window (contatore per minuto), 2) Sliding window (orologio scorrevole, più preciso), 3) Token bucket (consente burst). Implementazione: 1) HTTP headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset), 2) Codici di risposta (429 Too Many Requests), 3) Header Retry-After (indica quando riprovare), 4) Database rate limit (Redis ottimale, conteggio query per chiave). Tracciamento per utente: API key/token (identificativo univoco), user ID (se autenticato), indirizzo IP (anonimo). Gestione superamento limiti: 1) Rifiuto immediato (risposta 429), 2) Coda (risposta ritardata), 3) Throttle (risposta più lenta). Best practice: limiti graduati (piano gratuito: 100/min, piano a pagamento: 1000/min), fallback basato su IP (se non autenticato), allowance burst (Token bucket: 100 normale, 500 burst). Gestione app mobile: strategia di backoff (esponenziale: 1s → 2s → 4s), gestione errori (mostrare messaggio 'rate limited', riprovare più tardi), caching (minimizzare le chiamate API).

DDoruk A***Partecipante
Ruolo
Coordinatore generale
Settore
Indotto automotive
Tipo di organizzazione
Azienda di 20 persone
Iscrizione
ott 2022
Messaggio
18

Doki · Penetration test · 2024

#3

metti il rate limit 100 req/min per utente all'inizio. installa redis, traccia il numero di richieste per chiave. invia risposta 429 quando si supera il limite. documenta gli header per il dev mobile — x-ratelimit-remaining...

PS: è stato chiesto qui sotto, ho scritto la risposta nel secondo messaggio.

FFeyza S***PartecipanteMembro della community
Iscrizione
ago 2023
Messaggio
251
#4

Implementazione del rate limiting: 1) Algoritmo token bucket (pseudocode: bucket_tokens = min(max_tokens, bucket_tokens + rate*elapsed_time), alla richiesta: if bucket_tokens >= 1 → decrementa, altrimenti 429), 2) Struttura chiavi Redis (user_id:rate_limit → incrementa, expire 60s), 3) Header HTTP (response.setHeader('X-RateLimit-Limit', 100), 'X-RateLimit-Remaining', tokens_left, 'X-RateLimit-Reset', reset_time), 4) Limiti per endpoint (configurazione middleware: mapping route → limit). Distribuzione: l'API gateway (AWS API Gateway, Kong) gestisce il rate limiting prima della logica applicativa oppure a livello applicazione (middleware: express-rate-limit, Flask-Limiter). Monitoraggio: avviso quando si avvicina al limite (80%), blocco dei violatori ricorrenti (blacklist IP), sanzione graduale (ritardi crescenti).

BBeyza B***PartecipanteMembro della community
Iscrizione
lug 2025
Messaggio
254
#5

metti il rate limit 100 req/min per utente. tieni un contatore token su Redis. se supera il limite invia 429 + header Retry-After. onestamente consigli al dev mobile l'exponential backoff — dopo il bot riprova più tardi. se c'è una API key condivisa dai una key per utente...

HHilal Ö***Partecipante
Ruolo
Responsabile social media
Settore
Turismo
Tipo di organizzazione
boutique agency
Iscrizione
apr 2024
Messaggio
215
#6

Strategia di rate limiting: 1) Livelli scaglionati (free: 100/min pro: 1000/min), 2) Sensibilità dell'endpoint (lettura: limite alto, scrittura: limite basso) 3) Permessi burst (bucket size > rate — gli utenti possono fare spike brevi), 4) Classificazione utente (autenticato: limite più alto anonimo/IP: più basso). Metriche di monitoraggio: tasso risposte 429 (traccia pattern di abuso), trend uso API (capacity planning), utenti simultanei (stima carico). Resilienza lato client: backoff esponenziale (delay 1s, 2s, 4s, 8s), jitter (randomizza per evitare thundering herd), accodamento richieste (batch, fuori orario di punta).

FFatma Y***EspertoMembro della community
Iscrizione
gen 2024
Messaggio
287
#7

in teorria è giusto in pratica non funziona così poi le decisioni affrettate diventano decisioni da correggere sei mesi dopo.

questa è la mia opinione, non la scrivo come verità assoluta.

HHakan A***Nuovo membro
Ruolo
Editor di contenuti
Settore
Catering
Tipo di organizzazione
ditta individuale
Iscrizione
ago 2026
Messaggio
4
#8

Raro trovare articoli che spiegano le cose così chiaramente.

KKazımNuovo membro
Ruolo
Produzione plastica
Iscrizione
set 2024
Messaggio
36
#9

Non lo sapevo.

EEmine S***Partecipante
Ruolo
Responsabile social media
Settore
Cosmetica
Tipo di organizzazione
Team di 8 persone
Iscrizione
set 2024
Messaggio
387
#10

Non ho alcuna esperienza in materia di sicurezza api rate limit, quindi chiedo. Prendere misure senza fare un inventario lascia aperta una porta che non vedi.

Le decisioni affrettate diventano decisioni da correggere sei mesi dopo. Se scrivete qui il risultato, sarà utile anche ad altri.

ZZafer A***Partecipante
Ruolo
Sviluppatore software
Settore
Plastica
Tipo di organizzazione
attività con due sedi
Iscrizione
gen 2024
Messaggio
2
#11

Dopo aver vissuto questa cosa il mio punto di vista è cambiato. Prendere appunti per due settimane dà risultati migliori rispetto a una stima di sei mesi.

Spero che le sia utile.

ZZerrin U***PartecipanteMembro della community
Iscrizione
ott 2024
Messaggio
3
#12

Lascio un avvertimento. La risposta varia molto in base al settore, non esiste una regola generale.

Se scrivete qui il risultato, sarà utile anche ad altri.

CCanerPartecipante
Ruolo
Provider di hosting
Iscrizione
nov 2023
Messaggio
128
#13

Sono della stessa opinione. Un backup non testato non è un backup.

Inizia con un piccolo test, non impegnarti subito su tutto. Buon lavoro.

LLale A***Partecipante
Ruolo
Capocantiere
Settore
Servizi IT
Tipo di organizzazione
cooperativa
Iscrizione
lug 2023
Messaggio
86
#14

Vorrei fare una domanda. Se ricevete tre risposte diverse su un argomento, la domanda è posta male.

È tutto, scusate se mi sono dilungato.

PPerihan K***Partecipante
Ruolo
Product manager
Settore
Catering
Tipo di organizzazione
Azienda di 20 persone
Iscrizione
feb 2024
Messaggio
220

Doki · Sito web aziendale · 2024

#15

La penso diversamente. Il fatto che tutti facciano una cosa non significa che sia quella giusta.

Quando decidiamo senza misurare, finiamo sempre nello stesso punto. Confermato dall'esperienza.

HHüseyin T***Veteran
Ruolo
Direttore clinico
Settore
Commercio all'ingrosso alimentare
Tipo di organizzazione
startup appena avviata
Iscrizione
giu 2024
Messaggio
378
#16

Scrivo questo per evitare che facciate lo stesso errore. Se permessi e ambito non sono scritti, quel test non deve iniziare.

Confermato dall'esperienza.

KKORİTeam Doki
Ruolo
Moderatore del forum
Settore
Sicurezza informatica e digitale
Tipo di organizzazione
Doki
Iscrizione
gen 2023
Messaggio
2840
Sentinella#17

Vorrei aggiungere questo, perché sul forum viene spesso trascurato: il tempo che impiegate a rilevare un problema ne determina direttamente il costo. Accelerare il rilevamento è spesso più economico che investire nella prevenzione.

TTolga Y***PartecipanteMembro della community
Iscrizione
dic 2023
Messaggio
14
#18

Preso nota, grazie.

KKaan O***PartecipanteMembro della community
Iscrizione
feb 2023
Messaggio
16
#19

Mi chiedo anch'io.

TTuğçe Ö***VeteranMembro della community
Iscrizione
ott 2025
Messaggio
14
#20

Bisogna procedere con ordine. Da noi la cosa che faceva perdere più tempo era non sapere chi decidesse.

Spero che le sia utile.

Rispondi