Blog Alphorm Logo de blog informatique spécialisé en technologie et solutions IT
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Réinitialisation Sécurisée du Mot de Passe Laravel
Agrandisseur de policeAa
Blog AlphormBlog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Search
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
Suivez-nous
© Alphorm 2024 - Tous droits réservés
Développement

Réinitialisation Sécurisée du Mot de Passe Laravel

L'Équipe Alphorm Par L'Équipe Alphorm 9 janvier 2025
Partager
Partager

La réinitialisation du mot de passe est essentielle pour garantir la sécurité des utilisateurs.

Sans une méthode sécurisée, votre application est vulnérable aux attaques malveillantes.

Cet article explore les bonnes pratiques pour une réinitialisation sécurisée du mot de passe dans Laravel.

Table de matière
Réinitialisation mot de passe : reset()Sécuriser la route de réinitialisationFormulaire reset.blade.php : validationFAQConclusion

Formation Laravel : Le Guide Complet du Débutant

Initiez-vous à Laravel et réalisez votre première application en toute confiance.

Découvrir cette formation

Dans cette section, nous allons vous expliquer comment traiter la réinitialisation du mot de passe dans votre application. Vous découvrirez les étapes nécessaires pour valider les données soumises par l’utilisateur, vérifier la validité du token de réinitialisation, et mettre à jour le mot de passe de manière sécurisée.

Réinitialisation mot de passe : reset()

Pour commencer, vous allez créer une méthode reset() dans le contrôleur RestController. Cette fonction est responsable de valider les données du formulaire, de vérifier si le token de réinitialisation est valide, et de mettre à jour le mot de passe de l’utilisateur si tout est correct.

Validation des données soumises :

Lorsque l’utilisateur soumet le formulaire, vous devez d’abord valider les données pour vous assurer qu’elles respectent certaines règles. Par exemple, vous allez vérifier que l’email est valide, que le mot de passe est bien confirmé, et que le token est présent.

Voici comment vous pouvez valider ces données dans la méthode reset() :

				
					
 request()->validate([
'email' => 'required|email',
'token' => 'required',
'password' => 'required|between:9,20|confirmed',
]);

				
			

Vérification du token :

Une fois les données validées, vous devez vérifier que le token de réinitialisation correspond bien à l’email de l’utilisateur dans la base de données. Si le token est invalide, vous renvoyez un message d’erreur.

Voici la vérification du token dans votre fonction reset() :

				
					
 if (
DB::table('password_reset_tokens')
->where('email', request('email'))
->where('token', request('token'))
->count() == 0
) {
$error = 'Vérifiez l\'adresse email.';
return back()->withError($error)->withInput();
}

				
			

Mise à jour du mot de passe :

Si le token est valide, vous pouvez maintenant mettre à jour le mot de passe de l’utilisateur. Vous allez chiffrer le nouveau mot de passe avec bcrypt() et enregistrer les modifications dans la base de données. Ensuite, vous supprimerez le token de réinitialisation de la base de données pour éviter son utilisation future.

Voici le code pour mettre à jour le mot de passe :

				
					
 $user = User::whereEmail(request('email'))->firstOrFail();
$user->password = bcrypt(request('password'));
$user->save();
DB::table('password_reset_tokens')->where('email', request('email'))->delete();
$success = 'Mot de passe mis à jour.';
return redirect()->route('login')->withSuccess($success);

				
			
Infos : Lors de la mise en œuvre de la méthode reset(), assurez-vous de supprimer le token de réinitialisation immédiatement après la mise à jour du mot de passe dans la base de données. Cela évite que le même token puisse être réutilisé à des fins malveillantes.

Résumé de la fonction :

La fonction reset() commence par valider les données du formulaire, puis vérifie la validité du token. Si tout est correct, elle met à jour le mot de passe de l’utilisateur et supprime le token.

Sécuriser la route de réinitialisation

Maintenant, vous devez définir une route pour que le formulaire envoie les données via la méthode POST au contrôleur. Cette route sera associée à la méthode reset() que vous venez de créer.

Voici comment définir la route dans le fichier web.php :

				
					
 Route::post('reset', 'RestController@reset')->name('post.reset');

				
			

Cette route permet de traiter la requête de réinitialisation lorsque l’utilisateur soumet le formulaire. Vous allez l’utiliser dans votre vue pour spécifier où envoyer les données.

Astuce Pratique :
Sécurisation de la Route :Ajoutez un middleware comme auth ou guest pour contrôler l’accès à cette route

Formulaire reset.blade.php : validation

Maintenant que vous avez configuré la route, vous devez mettre à jour le formulaire dans la vue reset.blade.php. Ce formulaire va envoyer une requête POST à la route post.reset que vous venez de définir.

Voici un exemple de formulaire mis à jour avec le champ token et l’utilisation de la route post.reset :

				
					
 <form action="{{route('post.reset')}}" method="post">
@csrf
<input type="hidden" name="token" value="{{$password_reset->token}}">
<div class="card-body">
<div class="mb-3 row">
<label for="staticEmail" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="text"  class="form-control" name="email" id="staticEmail" >
@error('email')
<div class="error">{{$message}}</div>
@enderror
</div>
</div>
<div class="mb-3 row">
<label for="staticEmail" class="col-sm-2 col-form-label">Mot de passe</label>
<div class="col-sm-10">
<input type="Password"  class="form-control" name="password" id="staticEmail" >
@error('password')
<div class="error">{{$message}}</div>
@enderror
</div>
</div>
<div class="mb-3 row">
<label for="staticEmail" class="col-sm-2 col-form-label">Confirmer le motde passe</label>
<div class="col-sm-10">
<input type="Password"  class="form-control" name="password_confirmation" id="staticEmail" >
@error('password_confirmation')
<div class="error">{{$message}}</div>
@enderror
</div>
</div>
</div>
<button class="btn btn-primary">Envoyer </button>
</div>
</form>

				
			

Pour bien comprendre voici l’explications

  • Action du formulaire :La directive {{ route(‘post.reset’) }} définit l’URL cible pour la requête POST, en utilisant le nom de la route (post.reset) défini dans web.php.
  • Protection CSRF :L’utilisation de @csrf dans le formulaire garantit que la requête est protégée contre les attaques CSRF (Cross-Site Request Forgery).
  • Token caché :Le champ input type= »hidden » inclut le token de réinitialisation, essentiel pour authentifier la requête et la relier au bon utilisateur.
  • Validation et gestion des erreurs :

Les directives @error affichent un message d’erreur si une validation échoue pour un champ donné.

Ces messages permettent de guider l’utilisateur sur les corrections nécessaires.

  • Champs nécessaires :

email : Pour identifier l’utilisateur.

password et password_confirmation : Pour définir et confirmer le nouveau mot de passe.

  • Bouton de soumission :Le bouton »Envoyer »envoie les données au contrôleur via la route définie.
Astuce Pratique : Vérifiez dans le navigateur (console et onglets réseau) que le formulaire envoie bien toutes les données nécessaires.

Pour tester, accédez à la page de réinitialisation de mot de passe. Entrez votre adresse email dans le formulaire prévu à cet effet. Une fois soumis, le système vérifie l’existence de l’email dans la base de données et envoie un lien de réinitialisation si l’email est valide. Voici ce que vous pouvez attendre comme résulta

  • Cas de Succès :Réinitialisation du mot de passe réussie

Vérifier que la réinitialisation du mot de passe fonctionne correctement lorsque l’utilisateur soumet les bonnes informations.

Étapes à suivre :

Entrer les données dans le formulaire :
Ouvrez le formulaire de réinitialisation du mot de passe. Dans ce cas, entrez les informations valides comme suit :

Formulaire pour réinitialiser mot de passe Laravel

Soumettre le formulaire :
Cliquez sur le bouton Envoyer pour soumettre le formulaire avec les informations renseignées.

Résultat attendu :
Après avoir soumis le formulaire, la réinitialisation du mot de passe est effectuée.
Vous serez redirigé vers la page de connexion avec un message de succès indiquant :

Interface de connexion Laravel, mise à jour mot de passe

Le mot de passe de l’utilisateur sera désormais mis à jour dans la base de données.

Cas d'Erreur : Les champs vides

Vérifier que le système affiche une erreur lorsque l’utilisateur soumet le formulaire avec un champ email vide.

Le système vérifiera que le champ email est requis et renverra une erreur.
Vous verrez le message suivant :

Formulaire de réinitialisation de mot de passe Laravel

Le formulaire sera réaffiché avec les champs vides, vous demandant de compléter correctement l’email avant de soumettre à nouveau.

Formez-vous gratuitement avec Alphorm !

Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.

Démarrer gratuitement
illustration processus de paiement en ligne avec étapes claires et convivialité

FAQ

Comment valider les données soumises dans le formulaire de réinitialisation?
Pour valider les données soumises dans le formulaire de réinitialisation du mot de passe, utilisez la méthode request()->validate(). Assurez-vous que l’email est requis et conforme, que le token est présent, et que le mot de passe respecte les règles de sécurité, comme une longueur comprise entre 9 et 20 caractères et une confirmation correcte. Cette étape garantit que seules des informations valides sont traitées, renforçant ainsi la sécurité de votre application Laravel.
Comment vérifier la validité du token de réinitialisation?
Pour vérifier la validité du token de réinitialisation, comparez le token fourni par l’utilisateur avec celui stocké dans la base de données. Utilisez une requête sur la table password_reset_tokens pour vérifier que le token et l’email correspondent. Si aucun enregistrement n’est trouvé, renvoyez un message d’erreur. Cette vérification empêche l’utilisation de tokens invalides, renforçant la sécurité lors de la réinitialisation du mot de passe.
Comment mettre à jour le mot de passe de manière sécurisée?
Une fois le token vérifié, mettez à jour le mot de passe en utilisant la fonction bcrypt() pour le chiffrer avant de l’enregistrer dans la base de données. Ensuite, supprimez le token de réinitialisation pour éviter sa réutilisation. Cette approche garantit que le mot de passe est stocké de manière sécurisée et que le processus de réinitialisation reste protégé contre les abus.
Quelle est la structure recommandée pour le formulaire de réinitialisation?
Le formulaire de réinitialisation doit inclure les champs pour l’email, le mot de passe et la confirmation du mot de passe. Utilisez la directive @csrf pour protéger contre les attaques CSRF. Intégrez un champ caché pour le token et définissez l’action du formulaire vers la route post.reset. Cela garantit que toutes les informations nécessaires sont correctement transmises et sécurisées lors de la soumission.
Comment sécuriser la route de réinitialisation du mot de passe?
Pour sécuriser la route de réinitialisation, associez-la à un middleware tel que auth ou guest, selon vos besoins. Cela contrôle l’accès à la route, évitant les requêtes non autorisées. Assurez-vous que la route utilise la méthode POST pour transmettre les données de manière sécurisée, et qu’elle est correctement définie dans votre fichier de routes.

Conclusion

En suivant ces étapes, vous pouvez sécuriser efficacement la réinitialisation des mots de passe dans Laravel. Quelle autre fonctionnalité de sécurité souhaitez-vous explorer dans Laravel?

ÉTIQUETÉ : Laravel
Facebook
Twitter
LinkedIn
Email
WhatsApp
Par L'Équipe Alphorm
Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.

Derniers Articles

  • Techniques pour gérer les fichiers texte en C#
  • Créer et lire un fichier CSV avec C#
  • JSON : Comprendre et Utiliser Efficacement
  • Créer une Base SQLite dans C#
  • Lecture des données SQLite simplifiée
Laisser un commentaire Laisser un commentaire

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

Blog Alphorm
  • Développement
  • 3D et Animation
  • Cybersécurité
  • Infrastructure
  • Virtualisation
  • Réseaux
  • Bureautique
  • BDD
En cours de lecture : Réinitialisation Sécurisée du Mot de Passe Laravel

© Alphorm - Tous droits réservés