Fonction équivalente à password en php
Résolu
Jiji_19
Messages postés
30
Date d'inscription
Statut
Membre
Dernière intervention
-
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
ElementW Messages postés 4814 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai une table qui contient la liste des comptes utilisateurs et leurs mots de passe.
les mots de passe sont cryptés en utilisant la fonction password de mysql.
maintenant je cherche la fonction équivalente à la fonction password en php.
merci
j'ai une table qui contient la liste des comptes utilisateurs et leurs mots de passe.
les mots de passe sont cryptés en utilisant la fonction password de mysql.
maintenant je cherche la fonction équivalente à la fonction password en php.
merci
A voir également:
- Fonction équivalente à password en php
- Fonction si et - Guide
- Easy php - Télécharger - Divers Web & Internet
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Enter administrator password or power on password - Forum Windows
3 réponses
Bonjour.
Il n'y a pas vraiment d'équivalent.
Ce que l'on fait d'habitude:
1- L'utilisateur entre son MDP ("banane" par exemple)
2- On chiffre le mot de passe rentré par l'utilisateur en php. (ça va donné une chaine de caractère bizarre)
3- on stocke cette chaine de caractère bizarre dans la BDD
4- quand l'utilisateur veut s'identifier a nouveau, on chiffre le MDP qu'il entre et on regarde si la chaine de caractère correspond a celle stocké en BDD.
Avantage: même l'admin système ne peut pas avoir accès au MDP en clair car il est tout le temps chiffré. Et en cas de vol de donnée, le MDP ne pourra pas être utilisé.
Pour savoir comment chiffrer un mot ("crypter" est un abus de langage) en php c'est par ici:
https://www.php.net/manual/fr/faq.passwords.php#faq.passwords.fasthash
Il n'y a pas vraiment d'équivalent.
Ce que l'on fait d'habitude:
1- L'utilisateur entre son MDP ("banane" par exemple)
2- On chiffre le mot de passe rentré par l'utilisateur en php. (ça va donné une chaine de caractère bizarre)
3- on stocke cette chaine de caractère bizarre dans la BDD
4- quand l'utilisateur veut s'identifier a nouveau, on chiffre le MDP qu'il entre et on regarde si la chaine de caractère correspond a celle stocké en BDD.
Avantage: même l'admin système ne peut pas avoir accès au MDP en clair car il est tout le temps chiffré. Et en cas de vol de donnée, le MDP ne pourra pas être utilisé.
Pour savoir comment chiffrer un mot ("crypter" est un abus de langage) en php c'est par ici:
https://www.php.net/manual/fr/faq.passwords.php#faq.passwords.fasthash
'lut, la doc de MySQL ne semble rien indiquer quant a l'algorithme utilisé par
Pour arriver à un résultat similaire en PHP, on peut se servir de la fonction hash(), qui permet de hasher un mot de passe avec plusieurs algorithmes. Généralement on choisit md5 ou sha1 à tort: ces hashages ont fait preuve de leur inefficacité par rapport aux collisions de hash; ils ne sont donc pas sécurisés. Choisis sha256 ou plus, ou un autre algorithme s'il est sécurisé, puis:
Si tu veux "migrer" les mots de passe MySQL vers un autre algorithme, tu es dans le pétrin: on ne peut pas convertir entre 2 algorithmes sachant qu'ils sont irréversibles...
La seule "solution" serait de traduire la source en C de la fonction PASSWORD en PHP.
PASSWORD(), et il est même précisé qu'il ne faut pas s'en servir dans ses applis... D'ailleurs, si on regarde la source de MySQL, on peut se rendre compte qu'il s'agit d'un algorithme spécifique.
Pour arriver à un résultat similaire en PHP, on peut se servir de la fonction hash(), qui permet de hasher un mot de passe avec plusieurs algorithmes. Généralement on choisit md5 ou sha1 à tort: ces hashages ont fait preuve de leur inefficacité par rapport aux collisions de hash; ils ne sont donc pas sécurisés. Choisis sha256 ou plus, ou un autre algorithme s'il est sécurisé, puis:
$hashMdp = hash("sha256", $mdp);
Si tu veux "migrer" les mots de passe MySQL vers un autre algorithme, tu es dans le pétrin: on ne peut pas convertir entre 2 algorithmes sachant qu'ils sont irréversibles...
La seule "solution" serait de traduire la source en C de la fonction PASSWORD en PHP.
Petite note: ce n'est pas du cryptage mais du hachage (hash en anglais) que l'on fait: un cryptage est réversible avec une clé/mot de passe, le hachage n'est pas réversible.
Sachant que la fonction PASSWORD utilisée par MySQL n'a pas d'équivalent en PHP (ni dans d'autres langages), il serait préférable de prendre une fonction "standard" comme sha256, qui est disponible en PHP et MySQL. Mais comme je l'ai dit, il n'est pas possible de convertir un mot de passe déjà haché, donc si tu disposes déjà d'une base de données avec des utilisateurs, tu te trouves dans une impasse de sécurité -- mais cela dépend de ton scénario.
Sachant que la fonction PASSWORD utilisée par MySQL n'a pas d'équivalent en PHP (ni dans d'autres langages), il serait préférable de prendre une fonction "standard" comme sha256, qui est disponible en PHP et MySQL. Mais comme je l'ai dit, il n'est pas possible de convertir un mot de passe déjà haché, donc si tu disposes déjà d'une base de données avec des utilisateurs, tu te trouves dans une impasse de sécurité -- mais cela dépend de ton scénario.
Salut,
Doc PHP, Hashage des mots de passe : https://www.php.net/manual/fr/faq.passwords.php#faq.passwords.bestpractice
Bonne journée
Doc PHP, Hashage des mots de passe : https://www.php.net/manual/fr/faq.passwords.php#faq.passwords.bestpractice
Bonne journée