Rate limiting
THE HIVE applique un rate limiting par IP sur les endpoints sensibles (authentification, inscription, reset password, upload). L’IP client est récupérée depuis CF-Connecting-IP (Cloudflare) puis X-Forwarded-For puis l’IP de la connexion.
Seuils par catégorie
Décision
Toute requête limitée renvoie :
Algorithme
Token bucket Redis — un compteur par (catégorie, IP). Reset glissant avec TTL équivalent à la fenêtre.
Contournement impossible
Les tentatives de contournement (rotation User-Agent, rotation cookies) ne fonctionnent pas : la clé Redis est indexée sur l’IP, pas sur des métadonnées client.
Bannissement IP
Une IP qui déclenche plus de 50 réponses 429 en 1 heure est ajoutée à Fail2ban et bloquée au niveau UFW pour 24h.
Exceptions
- Les IPs internes Bomunto sont en whitelist.
- Les IPs Cloudflare ne sont jamais bannies (Cloudflare agit comme proxy légitime).
Tester le rate limit en local
En dev, le rate limiting est désactivé par défaut. Pour le tester :
Bonnes pratiques client
- Respecter
Retry-After.
- Implémenter un exponential backoff : 1s, 2s, 4s, 8s, 16s max.
- Utiliser le refresh token plutôt que relogin à chaque session.
- Pour des imports en masse (ex. ajout vivier), batcher côté serveur via un endpoint dédié plutôt que boucler.