Documentation · Chapitre 08

Ralentir l’abus
sans bloquer la lecture.

Une limite de débit plafonne le nombre d’actions semblables dans une fenêtre de temps. Elle réduit le bruit automatisé, mais ne remplace pas l’authentification.

Nous sécurisons reading-list par couches, sans prétendre qu’une seule option suffit.

Configuration par défaut

phpaml — zsh
"rate_limit": {
  "enabled": true,
  "limit": 60,
  "window": 60,
  "methods": ["POST", "PUT", "PATCH", "DELETE"]
}

La limite s’applique par adresse cliente, méthode HTTP et chemin. Les lectures GET ne sont pas limitées par défaut. L’état est enregistré dans runtime/storage/rate-limits avec verrouillage des écritures concurrentes.

Quand la limite est dépassée

phpaml — zsh
HTTP/1.1 429 Too Many Requests
Retry-After: 37
Content-Type: application/json

{"error":"Trop de requêtes. Réessayez plus tard."}

Retry-After indique le nombre de secondes avant un nouvel essai. Une interface devrait respecter ce délai plutôt que relancer immédiatement la même action.

Ce que la limite ne garantit pas

  • Elle ne vérifie pas le droit d’exécuter l’action.
  • Une adresse IP peut représenter plusieurs personnes.
  • Plusieurs serveurs exigent un stockage partagé, par exemple Redis.
  • Les seuils doivent être ajustés à partir de mesures.