corentin_wakdo/docs/adr/0005-throttle-pin-separe-du-login.md
Corentin JOGUET 33e6901e7c
Some checks are pending
CI / auto-merge (push) Blocked by required conditions
CI / secret-scan (push) Successful in 11s
CI / static-tests (push) Successful in 48s
CI / php-lint (push) Successful in 25s
CI / js-tests (push) Successful in 19s
docs(adr): registre des decisions d'architecture (9 ADR) (#43)
2026-06-17 15:51:53 +02:00

1.1 KiB

ADR-0005 — Throttle du PIN separe des compteurs de connexion (RG-T22)

  • Statut : Accepte
  • Date : 2026-06-15

Contexte

Le PIN d'action sensible (ADR-0004) est court (4 chiffres) : il faut limiter le brute-force. Question : reutiliser les compteurs de login (user.lockout_until / login_throttle) ou un compteur dedie ? Et sur quelle dimension compter ?

Decision

Table pin_throttle dediee, separee des compteurs de connexion. La dimension est l'utilisateur agissant (la session authentifiee qui soumet le PIN), pas l'email cible (contournable par rotation) ni l'IP (collateral sur poste partage). Backoff degressif, bornes propres plus permissives que le login. Verrou evalue AVANT la verification ; sous verrou actif, pas de nouvelle ligne pin.failed (anti-amplification).

Consequences

  • (+) Spammer le PIN d'une victime ne verrouille pas sa CONNEXION (pas d'escalade DoS sur une surface plus sensible).
  • (+) Detection : un pic de pin.failed reste alertable.
  • (-) Un compteur de plus a purger (cron, comme login_throttle).
  • Brique : App\Auth\PinThrottle. Regle : RG-T22. Cf. ADR-0004.