Fonction équivalente à password en php
Résolu/Fermé
Jiji_19
Messages postés
30
Date d'inscription
lundi 10 février 2014
Statut
Membre
Dernière intervention
12 novembre 2014
-
12 mars 2014 à 16:05
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 12 mars 2014 à 18:07
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 12 mars 2014 à 18:07
A voir également:
- Fonction équivalente à password en php
- Fonction si et - Guide
- Easy php - Télécharger - Divers Web & Internet
- Winrar password unlocker - Télécharger - Récupération de données
- Fonction moyenne excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
3 réponses
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
12 mars 2014 à 16:13
12 mars 2014 à 16:13
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
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
12 mars 2014 à 16:15
12 mars 2014 à 16:15
'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.
Jiji_19
Messages postés
30
Date d'inscription
lundi 10 février 2014
Statut
Membre
Dernière intervention
12 novembre 2014
1
12 mars 2014 à 16:34
12 mars 2014 à 16:34
donc selon vous, je dois changer la fonction de cryptage?
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
12 mars 2014 à 18:07
12 mars 2014 à 18:07
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.
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
12 mars 2014 à 16:15
12 mars 2014 à 16:15
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