Skip to main content

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

Headers de réponse

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.