Rate Limiting : la protection essentielle de vos APIs
Le rate limiting contrôle le nombre de requêtes qu’un client peut faire dans un temps donné. Sans lui, un client malveillant ou un bug peut saturer votre serveur. Chez Eve Media, nous implémentons le rate limiting sur toutes nos APIs.
Pourquoi le rate limiting
Protection contre les attaques DDoS. Prévention de l’abus (scraping excessif). Équité entre utilisateurs. Contrôle des coûts sur les APIs payantes. C’est une protection de base pour toute API.
Algorithmes courants
Fixed Window : compteur par fenêtre de temps (ex: 100 req/minute). Sliding Window : lissage entre les fenêtres. Token Bucket : jetons rechargés progressivement. Leaky Bucket : débit constant maximum. Chaque algorithme a ses caractéristiques.
Fixed Window
Simple à implémenter : un compteur réinitialisé chaque minute. Problème : le « thundering herd » en début de fenêtre permet des pics. 200 requêtes en 2 secondes si le reset tombe entre.
Sliding Window Log
Garde un log horodaté de chaque requête. Compte les requêtes dans les N dernières secondes. Plus précis mais plus coûteux en mémoire. Pas de pics aux frontières de fenêtre.
Token Bucket
Un bucket se remplit de tokens à un rythme constant. Chaque requête consomme un token. Permet des bursts tant qu’il reste des tokens. Équilibre entre lissage et flexibilité.
Identification du client
Par IP : simple mais problématique avec le NAT. Par API key : précis mais nécessite l’authentification. Par user ID : pour les utilisateurs connectés. Combinez selon le contexte.
Headers de réponse
X-RateLimit-Limit : la limite. X-RateLimit-Remaining : les requêtes restantes. X-RateLimit-Reset : quand le compteur se réinitialise. Retry-After sur les 429. Informez le client pour qu’il s’adapte.
Réponse HTTP 429
Quand la limite est dépassée, renvoyez 429 Too Many Requests. Un message clair expliquant la limite et quand réessayer. Ne bloquez pas silencieusement.
Implémentation
Redis est idéal pour le rate limiting distribué (INCR avec EXPIRE). Des bibliothèques existent pour chaque langage. Les API gateways (Kong, AWS API Gateway) incluent le rate limiting.
Rate limits différenciés
Les utilisateurs gratuits ont des limites plus strictes. Les plans payants ont plus de quota. Les partenaires de confiance peuvent avoir des limites élevées. Adaptez aux tiers de service.
Conclusion
Le rate limiting est une protection fondamentale. Implémentez-le tôt, pas après un incident. C’est de la défense en profondeur pour la disponibilité de vos services.
Chez Eve Media, nous sécurisons les APIs de nos clients. Contactez-nous pour des architectures robustes.



