Magazine Gadgets

Comment hacher un mot de passe en PHP — SitePoint

Publié le 12 décembre 2023 par Mycamer


Il est important de savoir comment hacher un mot de passe dans n'importe quel langage de programmation, et dans cet article, nous expliquerons comment procéder en PHP et pourquoi le hachage des mots de passe est si important.

Comment hacher un mot de passe en PHP — SitePoint

Chaque programmeur PHP devra, à un moment donné, écrire une application qui s'appuie sur la connexion de l'utilisateur pour fonctionner correctement. Les noms d'utilisateur et les mots de passe sont normalement stockés dans une base de données puis utilisés pour l'authentification. Comme nous le savons, les mots de passe ne doivent jamais être stockés en texte brut dans la base de données : si la base de données est compromise, tous les mots de passe seront ouverts à des acteurs malveillants. C'est pourquoi nous devons apprendre à hacher un mot de passe.

Remarquez comment nous utilisons le mot hacher plutôt que Crypter? En effet, le hachage et le chiffrement sont des processus très différents et souvent confondus.

Hachage

UN hachage la fonction prend une chaîne comme mypassword123 et le convertit en une version chiffrée de la chaîne, connue sous le nom de hacher. Par exemple, mypassword123 pourrait être haché pour produire une chaîne apparemment aléatoire de chiffres et de lettres telles que 9c87baa223f464954940f859bcf2e233. Le hachage est une fonction à sens unique. Une fois que vous avez haché quelque chose, vous obtenez une chaîne de longueur fixe – un processus qui ne peut pas être facilement inversé.

Nous pouvons comparer deux hachages pour vérifier s’ils proviennent tous deux de la même chaîne d’origine. Plus loin dans cet article, nous verrons comment implémenter ce processus en utilisant PHP.

Chiffrement

Semblable au hachage, chiffrement prendra une chaîne d'entrée et la convertira en une chaîne apparemment aléatoire de chiffres et de lettres. Cependant, le cryptage est un processus réversible, si vous connaissez la clé de cryptage. Parce qu'il s'agit d'un processus réversible, c'est un mauvais choix pour les mots de passe, mais excellent pour des choses comme la messagerie sécurisée peer-to-peer.

Si nous chiffrons un mot de passe au lieu de le hacher et que la base de données que nous utilisons est accédée d'une manière ou d'une autre par un tiers malveillant, tous les comptes d'utilisateurs seront compromis – ce qui n'est évidemment pas un bon scénario.

Salaison

Les mots de passe doivent également être salé avant d'être haché. Salaison est l'action d'ajouter une chaîne aléatoire à un mot de passe avant de le hacher.

En salant les mots de passe, nous pouvons empêcher attaques de dictionnaire (où l'attaquant saisit systématiquement chaque mot du dictionnaire comme mot de passe) et attaques de table arc-en-ciel (où l'attaquant utilise une liste de hachages de mots de passe courants).

En plus du salage, nous devrions utiliser un algorithme quelque peu sécurisé lors du hachage. Cela signifie qu'il doit s'agir d'un algorithme qui n'a pas déjà été brisé, et de préférence spécialisé plutôt que généraliste (comme SHA512).

À partir de 2023, les algorithmes de hachage recommandés sont :

  • Argon2
  • Chiffrer
  • bcrypt
  • PBKDF2

Hachage avec PHP

Le hachage sur PHP est devenu facile depuis PHP5.5 avec l'introduction du password_hash() fonction.

Pour le moment, il utilise bcrypt (par défaut) et prend en charge d'autres algorithmes de hachage comme Argon2. Le password_hash() La fonction se charge également de saler le mot de passe pour nous.

En fin de compte, il renvoie le mot de passe haché. Le coût et sel sont renvoyés dans le cadre du hachage.

En termes simples, le coût dans un hachage de mot de passe fait référence à la quantité de calcul requise pour générer le hachage. C'est comme une mesure de la « difficulté » de créer le hachage. Plus le coût est élevé, plus c’est difficile.

Imaginez que vous vouliez faire un gâteau et que la recette de ce gâteau dit « battre les œufs pendant cinq minutes ». C'est le « coût » de fabrication de ce gâteau. Si vous souhaitez rendre le gâteau plus « sécurisé », vous pouvez modifier la recette pour dire « battre les œufs pendant dix minutes ». Maintenant, il faut plus de temps pour faire le gâteau, et cela revient à augmenter le « coût » de fabrication du gâteau.

Comme on peut le lire sur le password_hash() Documentation:

… toutes les informations nécessaires pour vérifier le hachage y sont incluses. Ceci permet [password_verify()] fonction pour vérifier le hachage sans avoir besoin de stockage séparé pour les informations de sel ou d'algorithme.

Cela garantit que nous n'avons pas besoin de stocker des informations supplémentaires sur notre base de données pour vérifier le hachage.

En pratique, cela ressemble à ceci :

<?php
    $password = "sitepoint";

    $hashed_password = password_hash($password, PASSWORD_DEFAULT);

    if (password_verify($password, $hashed_password)) {
        
    } else {
        
    }

Plus d'informations sur le password_hash() la fonction peut être trouvée icialors que password_verify() peut être trouvé ici.

Conclusion

Il est important que les programmeurs PHP comprennent la différence entre le hachage et le cryptage, et utilisent le hachage pour stocker les mots de passe afin de protéger les comptes d'utilisateurs contre toute compromission. L'introduction du password_hash() La fonction de PHP 5.5 a permis aux programmeurs de hacher facilement et en toute sécurité les mots de passe à l'aide de divers algorithmes, notamment Argon2 et bcrypt.

Comme le décrit Tom Butler dans PHP et MySQL : du débutant au ninja:

Heureusement pour nous, PHP inclut un moyen très sécurisé de hacher les mots de passe. Il est créé par des personnes qui en savent beaucoup plus sur ce sujet que vous ou moi, et cela évite aux développeurs comme nous d'avoir à bien comprendre les problèmes de sécurité qui peuvent survenir. Pour cette raison, il est fortement recommandé d'utiliser l'algorithme PHP intégré pour hacher les mots de passe plutôt que de créer le nôtre.

Assurez-vous d’en tenir compte et de rester à jour sur les derniers algorithmes de hachage recommandés pour garantir la meilleure sécurité possible pour vos applications.

FAQ sur le hachage des mots de passe en PHP

Qu’est-ce que le hachage de mot de passe et pourquoi est-il important en PHP ?

Le hachage de mot de passe est le processus de conversion d'un mot de passe en texte brut en une chaîne de caractères irréversible de longueur fixe. Il est important en PHP de sécuriser les mots de passe des utilisateurs en les stockant sous une forme hachée, ce qui rend difficile aux attaquants de récupérer le mot de passe d'origine.

Quels algorithmes de hachage dois-je utiliser pour le hachage de mot de passe en PHP ?

PHP fournit password_hash() et password_verify() fonctions qui utilisent l'algorithme bcrypt par défaut. Il est recommandé d'utiliser bcrypt, car il s'agit d'un choix sécurisé pour le hachage de mot de passe.

Comment hacher un mot de passe en PHP ?

Vous pouvez hacher un mot de passe en utilisant le password_hash() fonction. Par exemple: password_hash($password, PASSWORD_BCRYPT).

Comment vérifier un mot de passe haché en PHP ?

Pour vérifier un mot de passe haché, utilisez le password_verify() fonction. Il vérifie si un mot de passe donné correspond à la version hachée stockée dans la base de données.

Dois-je saler les mots de passe lors du hachage en PHP ?

Oui, il est recommandé d'utiliser un sel unique pour chaque mot de passe avant le hachage. Le password_hash() La fonction génère automatiquement un sel, vous n'avez donc pas besoin de le gérer manuellement.

to www.sitepoint.com


Suivez-nous sur Facebook : https://web.facebook.com/mycamer.net/
Pour recevoir les dernières nouvelles sur votre téléphone grâce à l’application Telegram, cliquez ici : https://t.me/+KMdLTc0qS6ZkMGI0
Envoyez-nous un message par Whatsapp : Whatsapp +237 650 50 31 31


The post Comment hacher un mot de passe en PHP — SitePoint first appeared on Technique de pointe.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Mycamer Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazines