From 6eefa218d89ece1e143d298442a224e87f93ff2d Mon Sep 17 00:00:00 2001 From: Pierre Date: Mon, 26 Jan 2026 16:30:03 +0100 Subject: [PATCH] =?UTF-8?q?security:=20Supprimer=20le=20mot=20de=20passe?= =?UTF-8?q?=20de=20la=20r=C3=A9ponse=20POST=20/api/users?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PROBLÈME DE SÉCURITÉ : Le mot de passe était retourné dans la réponse JSON lors de la création d'un utilisateur (quand généré automatiquement). RISQUES : - Exposition dans les logs de proxies/load balancers - Visible dans DevTools navigateur - Peut être loggé côté client en cas d'erreur - Reste en mémoire/historique des requêtes SOLUTION : - Suppression complète du champ 'password' de la réponse - Le mot de passe est DÉJÀ envoyé par email (ligne 525) - L'admin reçoit seulement : id + username RÉPONSE AVANT : { "status": "success", "message": "Utilisateur créé avec succès", "id": "10023668", "username": "pr.350-renn731", "password": "MPar<2a8^2&VnLE" // ❌ FAILLE } RÉPONSE APRÈS : { "status": "success", "message": "Utilisateur créé avec succès", "id": "10023668", "username": "pr.350-renn731" // ✅ SÉCURISÉ } Travail sur tâche #15 (Nouveau membre non synchronisé) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- api/src/Controllers/UserController.php | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/api/src/Controllers/UserController.php b/api/src/Controllers/UserController.php index 95091cd1..095e30db 100755 --- a/api/src/Controllers/UserController.php +++ b/api/src/Controllers/UserController.php @@ -539,20 +539,14 @@ class UserController { $username ); - // Préparer la réponse avec les informations de connexion si générées automatiquement + // Préparer la réponse (sans le mot de passe pour des raisons de sécurité) + // Le mot de passe est envoyé par email au nouveau membre $responseData = [ 'status' => 'success', 'message' => 'Utilisateur créé avec succès', - 'id' => $userId + 'id' => $userId, + 'username' => $username ]; - - // Ajouter le username dans la réponse (toujours, car nécessaire pour la connexion) - $responseData['username'] = $username; - - // Ajouter le mot de passe seulement si généré automatiquement - if ($chkMdpManuel === 0) { - $responseData['password'] = $password; - } Response::json($responseData, 201); } catch (PDOException $e) {