par Tychic Obanda
Programmation web | 7 commentaires
Besoin d'une carte Visa ? Procurez-vous la carte visa Fyatu à seulement 5$. Cliquez ici
Il vous est déjà arrivé de vous demander comment crypter les mots de passe de vos utilisateurs afin de les sécuriser? Et bien, c'est ce que je vais partager avec vous aujourd'hui. Nous allons découvrir ensemble comment hasher un mot de passe en PHP.
PHP est parmi les langages back-end les plus utilisés sur le web et son utilisation est en quelque sorte un chemin obligé pour les novices en programmation web.
Si vous êtes encore débutant en programmation, il est fort probable que vous ne connaissiez pas ce que c'est hasher un mot de passe. Mais à travers cet article, vous allez le comprendre et l'utiliser pour toute une vie
Mais c'est quoi exactement hasher un mot de passe? Et pourquoi le faire?
Ces questions méritent des réponses.
Hasher un mot de passe revient à le crypter pour interdire la compréhension aux humains que nous sommes. Vous n'avez pas toujours compris? Un exemple vous fera comprendre.
Supposons que votre mot de passe est MotDEPass3. Après le hashage(action de hasher), ce mot de passe deviendra $2y$10$.ULS6PTKyvRm4.W7tewXe.dsCddKhoJ0Cj1j4ib0D9JNaZaXJDd4a.
Vous êtes arrivé à lire ce mot de passe crypté? Je ne crois pas. Avec cet exemple, je pense que vous avez compris l'importance de hasher un mot de passe.
Un autre exemple :
Imaginez que vous créez un espace membre sur votre site. Et qu'à chaque inscription, le membre doit renseigner ses informations ainsi que son mot de passe que vous allez stocker dans la base de données.
Vous ne devez jamais stocker dans votre base de données un mot de passe tel que saisi par l'utilisateur. Il faut le crypter. Pourquoi? Votre site peut être un jour le cible de piratage(je ne souhaite pas que cela vous arrive ) et que le hacker récupère une copie de votre base de données.
Si les mots de passe de vos utilisateurs sont cryptés, le hacker ne saura pas se connecter aux comptes de vos utilisateurs. Dans le cas contraire, vous savez où je vais arriver.
Bref, il faut faire le hashage de mot de passe et voyons maintenant comment le faire.
Le hashage ne concerne pas seulement les mots de passe et ne se fait pas uniquement en PHP. Vous pouvez hasher n'importe quelle information dans n'importe quel langage de programmation.
Lorsqu'on hashe les mots de passe, les deux considérations les plus importantes sont le temps de traitement et le grain de sel. Plus la puissance de traitement requise est élevée, plus il faudra du temps pour casser le mot de passe en analysant sa sortie.
Un grain de sel est une petite donnée additionnelle qu'on renforce significativement la puissance du hashage pour le rendre beaucoup plus difficile à hacker.
Pour hasher un mot de passe en PHP, on peut utiliser plusieurs fonctions que je vous présente ci-dessous.
La fonction password_hash() crypte dynamiquement une information et c'est la fonction recommandé pour le hashage des mots de passe.
Cette fonction reçoit toujours deux paramètres :
Prenons maintenant un exemple.
<?php
$pass = "MotDEPass3";
echo password_hash($pass, PASSWORD_DEFAULT); // Affiche le mot de passe crypté
?>
Cet exemple explique l'utilisation de la fonction password_hash(). Cette fonction reçoit en premier paramètre, l'information qu'on souhaite hasher(variable $pass). En deuxième paramètre, elle reçoit l'option de hashage(PASSWORD_DEFAULT).
Maintenant la question qui se pose c'est, comment comment savoir si le mot de passe sais correspond à celui hashé?
Pour vérifier la correspondance d'un mot de passe hashé en password_hash(), on utilise la fonction password_verify() qui recoit deux paramètres :
<?php
$pass = "MotDEPass3";
$pass_hash = password_hash($pass, PASSWORD_DEFAULT);
if (password_verify($pass, $pass_hash))
{
echo "Mot de passe correct";
}
else
{
echo "Mot de passe incorrect";
}
?>
La fonction password_hash() n'est pas la seule fonction de hashage. Il existe d'autres fonctions de hashage.
Mais le problème avec ces fonctions est que, on ne conseille plus de les utiliser car elles ne sont plus fortes côté sécurité.
Parmi ces fonctions, nous avons :
Avec cet article, je pense que vous êtes maintenant en mesure de hasher les mots de passe de vos utilisateurs.
Je suis Tychic Obanda. Avant j'étais un simple visiteur des sites internet et aujourd'hui je suis devenu le créateur des sites internet. Passionné de l'internet et de la programmation, je publie sur ce site des astuces et tutoriels pour vous aider de mieux apprendre la programmation web et de vivre de cette passion.
Merci pour l'enseignement que tu donne.
moi j'utilise ceux-ci
$hash_pass = sha1($pass1);
$q = $db->prepare('INSERT INTO users(pseudo, email, password, ip, created)
VALUES(:pseudo, :email, :password, :ip, now())');
$q->execute(array(
'pseudo' => $pseudo,
'email' => $email,
'password' => $hash_pass,
'ip' => $SERVER['REMOTEADDR']
));
et maintenant je voudrais le remplacer par cela dans le même fichier
$password = Auth::hashPassword($_POST['password']);
$token = sha1(uniqid(rand()));
Je ne parvient pas à changer le système de hashage du mot de passe
Merci de votre aide
En lisant l'article ci-haut je viens d'y tirer intérêt du côté sécurité des mots de passes des utilisateurs merci de vos initiatives pour la dispense de ce que vous avez acquis Monsieur Tychic Obanda.je vous encourage!Vos articles me sont utiles!
Oui Désiré c'est très important de protéger les informations des utilisateurs tout en cryptant les mots de passe.
Merci beaucoup
Un ebook écrit pour vous montrer tout ce qu'il faut pour devenir développeur web