54 lines
1.8 KiB
Markdown
54 lines
1.8 KiB
Markdown
---
|
|
title: Rate Limiting
|
|
created: 2026-06-06
|
|
updated: 2026-06-06
|
|
type: concept
|
|
tags: [tech, security, architecture]
|
|
confidence: high
|
|
contested: false
|
|
sources: [synthesized]
|
|
---
|
|
# ⏱️ Rate Limiting
|
|
|
|
## Définition Courte
|
|
Mécanisme qui **limite le nombre de requêtes** qu'un client peut faire sur une période donnée, pour protéger un service contre les abus et les surcharges.
|
|
|
|
## Explication Détaillée
|
|
**Algorithmes courants** :
|
|
- **Fixed Window** : compteur par fenêtre de temps (ex: 100 req/minute). Simple, mais burst aux limites.
|
|
- **Sliding Window** : fenêtre glissante, plus précis.
|
|
- **Token Bucket** : réservoir de tokens, refillé à rythme constant. Gère bien les bursts.
|
|
- **Leaky Bucket** : débit de sortie constant, lisse les pics.
|
|
|
|
**Niveaux d'application** :
|
|
- **L4 (TCP/UDP)** : limite de connexions par IP.
|
|
- **L7 (HTTP)** : limite de requêtes par route, utilisateur, ou IP.
|
|
- **API métier** : ex: 5 publications par heure par user.
|
|
|
|
Headers HTTP standards : `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`, `Retry-After`.
|
|
|
|
## Cas d'Usage
|
|
- Protection contre les attaques par force brute (login).
|
|
- Empêcher le scraping massif d'une API publique.
|
|
- Protéger un backend LLM coûteux (limite de tokens/minute).
|
|
- Éviter qu'un client monopolise un service partagé.
|
|
|
|
## Outils Liés
|
|
- **Redis** (Token Bucket rapide).
|
|
- **NGINX** (`limit_req`, `limit_conn`).
|
|
- **Traefik** (plugins rate-limit).
|
|
- **Cloudflare** (rate limiting global).
|
|
|
|
## Pages Liées
|
|
- [[api-gateway]]
|
|
- [[concepts-web]]
|
|
- [[checklist-mise-en-production]]
|
|
- [[securisation-home-lab]]
|
|
|
|
## Questions Ouvertes
|
|
- Comment différencier un bon client rapide d'un attaquant ?
|
|
- Le rate limiting au niveau réseau (L4) est-il encore utile à l'ère du HTTPS everywhere ?
|
|
|
|
## Liens
|
|
- [[load-shedding]]
|