From 656c7a2f3dfa017f9ef5a59e296be7f6e239ca2c Mon Sep 17 00:00:00 2001 From: Corentin JOGUET Date: Tue, 16 Jun 2026 14:21:09 +0200 Subject: [PATCH] fix(auth): retire le bouton mort PASSWORD_ALGO (argon2id fixe dans le code) (#29) --- .env.example | 6 +++--- docker-compose.yml | 1 - src/app/Auth/PasswordHasher.php | 3 +++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index f42aa6c..9db4c00 100644 --- a/.env.example +++ b/.env.example @@ -62,9 +62,9 @@ SESSION_NAME=WAKDO_SID # nom du cookie (evite PHPSESSID) # Doit correspondre exactement a APP_URL_KIOSK (pas de wildcard). CORS_ALLOWED_ORIGIN=https://kiosk.example.com -# Algorithme de hashage mot de passe (password_hash PHP). -# argon2id recommande depuis PHP 7.3 pour les nouveaux projets. -PASSWORD_ALGO=argon2id +# Algorithme de hashage : argon2id, FIXE dans le code (App\Auth\PasswordHasher), +# choix security-by-design non configurable (pas de bascule runtime vers un algo +# plus faible). Seuls les COUTS ci-dessous sont reglables. # Parametres de cout argon2id (password_hash options). # Defauts alignes sur les recommandations OWASP Password Storage Cheat Sheet diff --git a/docker-compose.yml b/docker-compose.yml index 6300881..3c146cc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -138,7 +138,6 @@ services: SESSION_LIFETIME_ABSOLUTE: ${SESSION_LIFETIME_ABSOLUTE} SESSION_NAME: ${SESSION_NAME} CORS_ALLOWED_ORIGIN: ${CORS_ALLOWED_ORIGIN} - PASSWORD_ALGO: ${PASSWORD_ALGO} # Cout argon2id (password_hash) : aligne sur .env.example / OWASP. Sert au # hash du mot de passe ET du PIN equipier (actions sensibles, P3). ARGON2_MEMORY_COST: ${ARGON2_MEMORY_COST} diff --git a/src/app/Auth/PasswordHasher.php b/src/app/Auth/PasswordHasher.php index cd9bc6d..08f4cd7 100644 --- a/src/app/Auth/PasswordHasher.php +++ b/src/app/Auth/PasswordHasher.php @@ -24,6 +24,9 @@ final class PasswordHasher public function hash(string $plain): string { + // argon2id en dur : choix security-by-design non configurable (pas de + // bascule runtime vers un algo plus faible). Seuls les couts sont lus de + // l'environnement (options()) ; il n'existe donc pas de var PASSWORD_ALGO. return password_hash($plain, PASSWORD_ARGON2ID, $this->options()); }