feat(back): renforce les limites de débit du login par email#577
Draft
simonaszilinskas wants to merge 1 commit into
Draft
feat(back): renforce les limites de débit du login par email#577simonaszilinskas wants to merge 1 commit into
simonaszilinskas wants to merge 1 commit into
Conversation
Trois protections sur le flux de connexion par code email, pensées pour ne jamais bloquer une classe de 600 eleves derriere une IP partagee (chaque limite critique est indexee sur l'email, pas sur l'IP seule). - limite les tentatives de verification d'un code a 5 par (IP, email) : ferme le bruteforce d'un code a 6 chiffres qui n'etait pas limite, sans permettre a un tiers de bloquer la connexion d'une victime (le compteur est scope a l'IP, le code n'est jamais invalide a distance) - ajoute un plafond par email sur les demandes de code (5/h) contre le bombardement de la boite d'une victime via rotation d'IP - releve le plafond par IP a 2000/h (configurable) pour ne pas bloquer les etablissements derriere un NAT partage - une nouvelle demande de code remet le compteur de tentatives a zero - tests unitaires des limites, dont l'absence de DoS inter-IP
4ecfb06 to
d9dfb62
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objectif
Combler trois trous dans le login par code email, sans jamais bloquer une classe de 600 élèves derrière une seule IP partagée. Chaque limite critique est donc indexée sur l'email (propre à chaque élève), pas sur l'IP seule.
Ce qui était fragile
/auth/email/verifyn'avait aucune limite : le code à 6 chiffres (valable 10 min) pouvait être bruteforcé sans fin./auth/email/requestn'était limité que par IP, donc bombardable en tournant les IP.Ce que fait la PR
Trois réglages env avec valeurs par défaut :
AUTH_EMAIL_REQUEST_PER_IP_PER_HOUR(2000),AUTH_EMAIL_REQUEST_PER_EMAIL_PER_HOUR(5),AUTH_VERIFY_MAX_ATTEMPTS(5). Les compteurs sont dans Redis et fail-open comme le reste du fichier. Tests danstests/arena/test_auth_ratelimit.py.