Site icon Blog ARC Optimizer

Comment hacher un mot de passe en PHP —

Comment hacher un mot de passe en PHP —


Il est important de savoir comment hacher un mot de passe dans n’importe quel langage de programmation, et dans cet article de conseil rapide, nous expliquerons comment faire cela en PHP, et pourquoi le hachage des mots de passe est si important.

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 à l’utilisation par 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 qui sont souvent confondus.

Hachage

UN hachage la fonction prend une chaîne comme mypassword123 et le convertit en une version cryptée de la chaîne, connue sous le nom de hacher. Par exemple, mypassword123 peut être haché pour produire une chaîne apparemment aléatoire de chiffres et de lettres tels 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 les deux de la même chaîne d’origine. Plus loin dans cet article, nous verrons comment nous pouvons implémenter ce processus en utilisant PHP.

Chiffrement

Similaire 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 que c’est 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 accessible 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 par 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 communs).

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 encore été rompu, et de préférence un algorithme spécialisé plutôt qu’un algorithme à usage général (comme SHA512).

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

  • Argon2
  • Scénario
  • bcrypt
  • PBKDF2

Hachage avec PHP

Le hachage sur PHP a été simplifié 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() fonction s’occupe également de saler le mot de passe pour nous.

À la fin, 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 nécessaire 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 dise « battez les œufs pendant cinq minutes ». C’est le « coût » de fabrication de ce gâteau. Si vous voulez rendre le gâteau plus « sûr », vous pouvez modifier la recette pour dire « battez les œufs pendant dix minutes ». Maintenant, il faut plus de temps pour faire le gâteau, et c’est comme augmenter le « coût » de fabrication du gâteau.

Comme on peut le lire sur 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 d’un stockage séparé pour les informations de sel ou d’algorithme.

Cela garantit que nous n’avons pas à stocker d’informations supplémentaires dans 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 pour les programmeurs PHP de comprendre la différence entre le hachage et le cryptage, et d’utiliser le hachage pour stocker les mots de passe afin de protéger les comptes d’utilisateurs contre toute compromission. L’introduction de la password_hash() La fonction de PHP 5.5 permettait aux programmeurs de hacher facilement les mots de passe en toute sécurité à l’aide de divers algorithmes, notamment Argon2 et bcrypt.

Comme décrit par Tom Butler dans PHP et MySQL : du novice au ninja:

Heureusement pour nous, PHP inclut un moyen très sécurisé de hachage des mots de passe. Il est créé par des personnes qui en savent beaucoup plus sur ce sujet que vous ou moi, et il évite aux développeurs comme nous d’avoir à comprendre pleinement 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 assurer la meilleure sécurité possible pour vos applications.




Source link
Quitter la version mobile