⊗ppPmAuRHS 424 of 447 menu

Ajout de sel dans l'enregistrement

Ainsi, vous savez déjà que le hachage via md5 est un processus irréversible et qu'un hacker, ayant accès au hash, ne pourra pas obtenir le mot de passe à partir de ce hash.

En réalité, cette affirmation n'est pas tout à fait exacte - actuellement, les méchants hackers ont compilé des bibliothèques de hash de mots de passe populaires et moins populaires, et n'importe quel imbécile peut deviner un mot de passe simplement en googlant son hash.

Il s'agit de mots de passe assez simples et populaires.

Googlez, par exemple, le hash 827ccb0eea8a706c4c34a16891f84e7b et vous verrez immédiatement dans les résultats de recherche de Google que c'est le mot de passe '12345'.

Les hash de mots de passe suffisamment complexes ne peuvent pas être devinés de cette manière (essayez).

Vous pourriez demander, quel est le problème alors - disons que nous allons tous nous enregistrer avec des mots de passe complexes. Il y a cependant un problème - la majorité des utilisateurs ne pensent pas à la sécurité de leurs données et peuvent saisir des mots de passe assez simples.

Lors de l'enregistrement, nous pouvons forcer à inventer des mots de passe plus longs, en limitant, par exemple, le nombre minimum de caractères à 6 ou 8, cependant, des mots de passe du type '123456' ou '12345678' apparaîtront quand même.

On peut, bien sûr, inventer un algorithme plus intelligent de vérification de la complexité du mot de passe, mais il existe une autre solution.

L'essence de cette solution est la suivante : il faut saler les mots de passe. Le sel est une chaîne aléatoire spéciale, qui sera ajoutée au mot de passe lors de l'enregistrement et le hash sera calculé non pas à partir du simple mot de passe, mais à partir de la chaîne sel+mot de passe, c'est-à-dire à partir du mot de passe salé.

C'est-à-dire que lors de l'enregistrement, vous ferez quelque chose comme ceci :

<?php $salt = '1sJg3hfdf'; // le sel - une chaîne aléatoire complexe $password = md5($salt . $_POST['password']); // on transforme le mot de passe en hash salé ?>

Dans ce cas, le sel sera différent pour chaque utilisateur, il faudra le générer de manière aléatoire au moment de l'enregistrement.

Voici une fonction prête, qui fera cela :

<?php function generateSalt() { $salt = ''; $saltLength = 8; // longueur du sel for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // symbole de la table ASCII } return $salt; } ?>

A l'aide de cette fonction, on peut réécrire notre code comme ceci :

<?php $salt = generateSalt(); // le sel $password = md5($salt . $_POST['password']); // mot de passe salé ?>

Je répète encore une fois qu'il s'agissait de modifications lors de l'enregistrement - dans la base de données, nous sauvegardons non pas simplement le hash du mot de passe, mais le hash du mot de passe salé.

Ce n'est pas tout : dans la table des utilisateurs, en plus des champs login et password, il faut créer également un champ salt, dans lequel nous stockerons le sel de chaque utilisateur.

Implémentez l'enregistrement décrit ci-dessus avec un mot de passe salé.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser