corentin_wakdo/tests/Unit
Imugiii 35ead030b1
All checks were successful
CI / php-lint (push) Successful in 22s
CI / php-lint (pull_request) Successful in 22s
CI / static-tests (pull_request) Successful in 36s
CI / auto-merge (push) Has been skipped
CI / auto-merge (pull_request) Successful in 6s
CI / secret-scan (push) Successful in 11s
CI / static-tests (push) Successful in 35s
CI / secret-scan (pull_request) Successful in 8s
fix(auth): leurre anti-enumeration sur la demande de reset (parite timing/ecritures)
PasswordResetService::requestReset repondait instantanement et sans ecriture sur
un email inconnu, alors que le chemin email-connu genere un token (random_bytes +
SHA-256), fait un UPDATE et envoie un mail : oracle de timing + de profil
d'ecritures revelant l'existence d'un compte. Le commit P2 #11 annoncait pourtant
une parite anti-enumeration PR-wide (vraie sur le login, pas sur le reset).

payEnumerationDecoy() reproduit le cout CPU et UNE ecriture du chemin connu, mais
sur id = 0 (aucune ligne, rien persiste) ; aucun mail. Meme pattern que le leurre
du login (UPDATE no-op sur id = 0). Tests unknown-email (service + controleur)
mis a jour : 1 ecriture leurre sur id=0, pas de mail. Suite 188 verte, PHPStan L6.
2026-06-16 12:02:19 +00:00
..
Admin feat(admin): throttle du PIN d action sensible par acteur (RG-T22) (#18) 2026-06-16 00:06:33 +02:00
Auth fix(auth): leurre anti-enumeration sur la demande de reset (parite timing/ecritures) 2026-06-16 12:02:19 +00:00
Core feat: authentification back-office P2 (login/logout/reset, throttle, audit) (#11) 2026-06-15 20:18:59 +02:00
ConfigTest.php feat(core): from-scratch PHP MVC skeleton (autoloader/config/PDO/router/front controller) + PHPUnit/PHPStan + composer-less CI 2026-06-15 14:13:49 +00:00
RouterTest.php feat(core): from-scratch PHP MVC skeleton (autoloader/config/PDO/router/front controller) + PHPUnit/PHPStan + composer-less CI 2026-06-15 14:13:49 +00:00