Crypter le mot de passe
Résolu/Fermé
labourette
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
-
15 déc. 2013 à 19:59
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - 19 déc. 2013 à 09:47
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - 19 déc. 2013 à 09:47
A voir également:
- Crypter mot de passe php mysql
- Voir mot de passe wifi android - Guide
- Mot de passe administrateur - Guide
- Identifiant et mot de passe - Guide
- Réinitialiser pc sans mot de passe - Guide
- Mot de passe bios perdu - Guide
10 réponses
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 15/12/2013 à 20:24
Modifié par JooS le 15/12/2013 à 20:24
Salut,
Le code suivant est a mettre a la 19eme ligne.
Tu as oublié le cas ou l'utilisateur n'existe pas.
Tu ne gère pas les injections SQL, utilises les requêtes préparés.
Avant d'exécuter la requête, il faut vérifier encore une fois si le login et mot de passe ne sont pas vides, car après le nettoyage des variables que tu as fait, il se peut que la variable contenant un espace avant et que l'espace a été supprimé avec trim, donc la variable est en fait vide.
htmlspecialchars et stripslashes ne servent pas a grand chose dans le cas du mot de passe, puisque dans tout les cas tu va hasher le mot de passe avec sha1.
Mettez en résolu quand c'est résolu -.- ...
Le code suivant est a mettre a la 19eme ligne.
//cryptage sha1 du mot de pass $pass = sha1($pass);
Tu as oublié le cas ou l'utilisateur n'existe pas.
Tu ne gère pas les injections SQL, utilises les requêtes préparés.
$resultats = $bdd->prepare('SELECT * FROM t_identifiant WHERE login=:log'); $resultats->execute(array(':log' => $login)); $donnees = $resultats->fetch(PDO::FETCH_ASSOC);
Avant d'exécuter la requête, il faut vérifier encore une fois si le login et mot de passe ne sont pas vides, car après le nettoyage des variables que tu as fait, il se peut que la variable contenant un espace avant et que l'espace a été supprimé avec trim, donc la variable est en fait vide.
htmlspecialchars et stripslashes ne servent pas a grand chose dans le cas du mot de passe, puisque dans tout les cas tu va hasher le mot de passe avec sha1.
Mettez en résolu quand c'est résolu -.- ...
labourette
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
6
15 déc. 2013 à 20:51
15 déc. 2013 à 20:51
Bonjour, Merci ta réponse.
En fait il y a quelque chose que j'ai oubliè de signaler. En fait j'ai rempli dans ma BDD tous les logins et mot de passe des membres manuellement.
Ensuite tous les membres qui souhaites se connecté demande via le lien" vous avez oublié vos identifiants cliquez ici"
Lorsque je rajoute "Sha1" à la ligne 19 le message me dit "Mauvais mot de passe ou login".
Sinon sans le sha1 tout fonctionne pourquoi à ton avis.
Merci beaucoup de ton aide
En fait il y a quelque chose que j'ai oubliè de signaler. En fait j'ai rempli dans ma BDD tous les logins et mot de passe des membres manuellement.
Ensuite tous les membres qui souhaites se connecté demande via le lien" vous avez oublié vos identifiants cliquez ici"
Lorsque je rajoute "Sha1" à la ligne 19 le message me dit "Mauvais mot de passe ou login".
Sinon sans le sha1 tout fonctionne pourquoi à ton avis.
Merci beaucoup de ton aide
labourette
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
6
15 déc. 2013 à 21:01
15 déc. 2013 à 21:01
Excuse moi c'est moi qui est fait une bourde j'avais oublié de crypter dans ma BDD en Sha1 tout fonctionne à merveille.
Je te remercie bonne soirée
Je te remercie bonne soirée
labourette
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
6
Modifié par pijaku le 19/12/2013 à 10:03
Modifié par pijaku le 19/12/2013 à 10:03
Bonjour
Je reviens vers toi car j'ai un grave problème, si tu as un peu de temps pour y jeter un oeil avec un grand merci.
En fait j'ai testé sur mon serveur le retour du mot de passe oublié par un utilisateur mais pour le moment sans cryptage du mot de passe déjà pour faire fonctionner le reour par mail.
Cela me retourne le Mot de passe c'est le Login
et le Login c'est l'adresse mail.
S'il te plait peut tu m'aider?
Merci
Je reviens vers toi car j'ai un grave problème, si tu as un peu de temps pour y jeter un oeil avec un grand merci.
En fait j'ai testé sur mon serveur le retour du mot de passe oublié par un utilisateur mais pour le moment sans cryptage du mot de passe déjà pour faire fonctionner le reour par mail.
Cela me retourne le Mot de passe c'est le Login
et le Login c'est l'adresse mail.
S'il te plait peut tu m'aider?
Merci
<?php //si la variable $email n'est pas vide if(!empty($_POST['email'])) { $email = stripslashes(htmlspecialchars(trim($_POST['email']), ENT_QUOTES)); $nom_form = stripslashes(htmlspecialchars(trim($_POST['nom']), ENT_QUOTES)); $prenom_form = stripslashes(htmlspecialchars(trim($_POST['prenom']), ENT_QUOTES)); $reponse = $bdd->query("SELECT t_gestion_adherent.nom, t_gestion_adherent.prenom, t_gestion_adherent.adresse_mail, t_identifiant.login, t_identifiant.pass FROM t_gestion_adherent INNER JOIN t_identifiant ON t_gestion_adherent.id_adherent = t_identifiant.rid_adherent WHERE adresse_mail='$email' AND nom='$nom_form' AND prenom='$prenom_form'"); if (list($nom, $prenom, $login, $pass) = $reponse->fetch()) //on affiche les champs dans un tableau { $mail=mail( $email , //on affiche la mail "Rappel de tes identifiants", "Bonjour," .$prenom. "\n Tu as perdu ton mot de passe et ton Login...les voici...\n Ton login est : " .$login. "\n Ton mot de passe est : ".$pass." \n A bientot ! Gilbert\n "From: monadresse.fr <monadresse@orange.fr>"); if($mail) //si le mail est bon.....sinon......sinon echo"<span class='erreur'><b><font color='red'>Ton mot de passe et ton Login<br/>viens de t-être envoyé à l adresse :<br/> $email <br/>Tu va les recevoir dans quelques minutes.</font></b></span>"; else echo"<span class='erreur'><b><font color='red'>Le mot de passe ne peux t-être envoyé!<br>Renouvelle ta demande dans un instant.<br/></font></b></span>"; } else echo"<span class='erreur'><b><font color='red'>Ton adresse ne correspond pas<br/>avec ton nom et ton prénom!</font></b></span>"; } ?> <center> <span class="recevoir"> Tu as perdu ton login et / ou ton mot de passe ?<br/> Entre ton Nom, Prénom et Adresse E-mail...<br/> Tes identifiants te seront alors envoyé à cette adresse ! <br/> Merci </span> <br/><br/> <div id="form_envoye"> <form name="form_connexion" id="ConnexionForm" action="index.php?body=identifiant_envoye&type=accueil" method="post" enctype="multipart/form-data"> <fieldset class="cadre"> <legend>Réservé aux membres</legend> <label for="nom">Ton nom :</label> <center><input type="text" id="nom" name="nom" class="nom" value="" tabindex="1"/></center><br/> <label for="prenom">Ton prénom :</label> <center><input type="text" id="prenom" name="prenom" class="prenom" value="" tabindex="2"/></center><br/> <label for="adresse_mail">Ton adresse mail :</label> <center><input type="text" id="adresse_mail" name="email" class="adresse_mail" value="" tabindex="3"/></center> <center><input src="image/envoyer.png" width="30%" type="image" name="connexion" class="form_connexion" border="0" Value="" align="middle"/></center> </fieldset> </form> </div>
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
17 déc. 2013 à 09:47
17 déc. 2013 à 09:47
Regarde ce que tu as sélectionné et l'ordre dans le quel tu l'as fait !
Tu as utiliser la fonction list donc !
La première case du tableau que retourne la requête sera affecté au premier paramètre de list.
La deuxième case du tableau que retourne la requête sera affecté au deuxième paramètre de list.
etc.
Dans ton cas, le troisième champs que tu as sélectionné est l'adresse email, donc il est affecté au troisième paramètre de la fonction qui n'est autre que "$login".
et le quatrième champs que tu as sélectionné est le login, donc il est affecté au quatrième paramètre de la fonction qui n'est autre que "$pass".
PS : Je vois que mes conseils d'utiliser les requêtes préparés n'a pas été pris en considération.
Tu as utiliser la fonction list donc !
La première case du tableau que retourne la requête sera affecté au premier paramètre de list.
La deuxième case du tableau que retourne la requête sera affecté au deuxième paramètre de list.
etc.
Dans ton cas, le troisième champs que tu as sélectionné est l'adresse email, donc il est affecté au troisième paramètre de la fonction qui n'est autre que "$login".
et le quatrième champs que tu as sélectionné est le login, donc il est affecté au quatrième paramètre de la fonction qui n'est autre que "$pass".
PS : Je vois que mes conseils d'utiliser les requêtes préparés n'a pas été pris en considération.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
labourette
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
6
17 déc. 2013 à 10:06
17 déc. 2013 à 10:06
Bonjour
Merci pour avoir résolu mon soucis.
En fait je ne savait pas que l'ordre était indispensable désolé en tout cas un grand merci.
PS en ce qui concerne les requète préparée je ne connait pas trop j'ai bien cherché mais rien ne voulait fonctionner, je vais encore essayé et si ça ne fonctionne pas je posterai.
Merci de ton aide
Merci pour avoir résolu mon soucis.
En fait je ne savait pas que l'ordre était indispensable désolé en tout cas un grand merci.
PS en ce qui concerne les requète préparée je ne connait pas trop j'ai bien cherché mais rien ne voulait fonctionner, je vais encore essayé et si ça ne fonctionne pas je posterai.
Merci de ton aide
Utilisateur anonyme
17 déc. 2013 à 16:41
17 déc. 2013 à 16:41
Bonsoir,
heureux que ton problème soit résolu.
petite parenthèse : il me semble que les méthodes md5 et du sha1 ne font pas du cryptage mais du hachage.
Dans la pratique ça change rien, mais je tenais quand même à le préciser ;p
https://forums.commentcamarche.net/forum/affich-821070-cryptage-hachage
A+ Seezer
heureux que ton problème soit résolu.
petite parenthèse : il me semble que les méthodes md5 et du sha1 ne font pas du cryptage mais du hachage.
Dans la pratique ça change rien, mais je tenais quand même à le préciser ;p
https://forums.commentcamarche.net/forum/affich-821070-cryptage-hachage
A+ Seezer
gardiendelanuit
Messages postés
1770
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
19 novembre 2016
264
17 déc. 2013 à 16:55
17 déc. 2013 à 16:55
Yup c'est bien du hachage (algorithme non réversible).
Je rajoute mon grain de sel avec la méthode "grain-de-sel" qui consiste à rajouter une chaîne courte aléatoire (caractères spéciaux) après la chaîne à hacher et qui permet une sécurité bien plus forte (surtout avec les algo comme sha1 et md5 qui sont maintenant dépassés.
Je rajoute mon grain de sel avec la méthode "grain-de-sel" qui consiste à rajouter une chaîne courte aléatoire (caractères spéciaux) après la chaîne à hacher et qui permet une sécurité bien plus forte (surtout avec les algo comme sha1 et md5 qui sont maintenant dépassés.
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
17 déc. 2013 à 18:59
17 déc. 2013 à 18:59
Concernant les algorithmes, il est déconseillé d'utiliser md5 et sha1 pour chiffrer les mots de passe, mais bon, ce n'était pas réellement la question, donc puisque vous en parlez, PHP conseille d'utiliser la fonction "crypt" avec l'algorithme Blowfish.
Si il faut ajouter une chaîne, il vaut mieux le faire :
au début.
ou encore mieux, début et fin.
ou encore bien meilleur, à disperser dans le texte, pour que même si le cryptanalyse arrive a trouver la chaîne originale, il ne pourra pas distinguer le grain de sel du mot de passe.
Exemple, trouvez le mot de passe :
1 : 7sdfDSFsf9sdd3NJ_fsd(è-ç_'QNLmon_motDe_passek,sdjèéjnéçnd345jnsk3453ldc,qss_
2 : 7sdfmDSoFsfn9s_dd3NJ_fsd(è-ç_'QNLmk,sodjètéjnDéçend3_45jpnsk3a453sldcs,qses_
Une chaîne courte ! au contraire, ajouter ou non un grain de sel n'empêchera pas le cryptanalyse de trouver la chaîne originale, mais ça lui fera perdre du temps, voir beaucoup de temps au point de le décourager et l'obliger à abandonner, donc plus la chaîne est longue(à une certaine limite), plus c'est mieux.
Si il faut ajouter une chaîne, il vaut mieux le faire :
au début.
ou encore mieux, début et fin.
ou encore bien meilleur, à disperser dans le texte, pour que même si le cryptanalyse arrive a trouver la chaîne originale, il ne pourra pas distinguer le grain de sel du mot de passe.
Exemple, trouvez le mot de passe :
1 : 7sdfDSFsf9sdd3NJ_fsd(è-ç_'QNLmon_motDe_passek,sdjèéjnéçnd345jnsk3453ldc,qss_
2 : 7sdfmDSoFsfn9s_dd3NJ_fsd(è-ç_'QNLmk,sodjètéjnDéçend3_45jpnsk3a453sldcs,qses_
Une chaîne courte ! au contraire, ajouter ou non un grain de sel n'empêchera pas le cryptanalyse de trouver la chaîne originale, mais ça lui fera perdre du temps, voir beaucoup de temps au point de le décourager et l'obliger à abandonner, donc plus la chaîne est longue(à une certaine limite), plus c'est mieux.
gardiendelanuit
Messages postés
1770
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
19 novembre 2016
264
Modifié par gardiendelanuit le 17/12/2013 à 20:34
Modifié par gardiendelanuit le 17/12/2013 à 20:34
Mais le fait d'ajouter un grain de sel change le hachage entier, il n'y a donc pas de différenciation possible entre le mdp hashé + le mdp hashé avec grain de sel.
Dans le cas où une chaîne longue est utilisée avant le hachage, le nombre de chance de collisions augmente en fonction de l'algo utilisé (possibilité d'avoir deux rendu identique avec deux entrées différentes - même s'il faut forcer, hein).
Dans le cas où une chaîne longue est utilisée avant le hachage, le nombre de chance de collisions augmente en fonction de l'algo utilisé (possibilité d'avoir deux rendu identique avec deux entrées différentes - même s'il faut forcer, hein).
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
17 déc. 2013 à 22:57
17 déc. 2013 à 22:57
Certes, c'est le hash qui change complètement, mais je parle de la chaîne originale !
Chaîne originale : 7sdfDSFsf9sdd3NJ_fsd(è-ç_'QNLmon_motDe_passek,sdjèéjnéçnd345jnsk3453ldc,qss_
Hash via md5 : c5f80bc76f6eafcc624f75eaf0a99e00
Disons qu'un cryptanalyse, par brute force arrive a trouver la chaîne originale (ce qui est improbable ici a cause de la longueur de la chaîne originale), en analysant manuellement (visuellement) la chaîne qu'il a trouver, il peux facilement et sans effort distinguer le mot de passe (qui généralement a un sens) du grain de sel ajouté (qui généralement n'est qu'une chaîne de caractères choisis aléatoirement).
Chaîne originale : 7sdfmDSoFsfn9s_dd3NJ_fsd(è-ç_'QNLmk,sodjètéjnDéçend3_45jpnsk3a453sldcs,qses_
Hash via md5 : 1505cb24899772f46a605ab96d11607a
Dans ce deuxième cas, même si le cryptanalyse arrive a trouver la chaîne originale, il ne pourra rien faire avec car le mot de passe a été dispersé dans le texte complet avant que le tout n'a été hashé, sauf si il possède plusieurs chaînes originales, dans ce cas il pourra les comparer afin de comprendre l'algorithme qui disperse les lettres dans le texte complet, mais bon, on lui aura quand même rendu la vie un peu plus difficile !
Concernant la longueur, l'algorithme md5 divise la chaîne d'entré en bloc de 512bits, c'est a dire 128 caractères, or, si ta chaîne d'entré n'a pas dépasser les 128 caractères, l'algorithme doit compléter avec des 1 et des 0, donc mieux vaut que tu remplisses le plus possible avec quelque chose qui vient de toi, plutôt que ça se remplisse automatiquement avec un truc par défaut.
Chaîne originale : 7sdfDSFsf9sdd3NJ_fsd(è-ç_'QNLmon_motDe_passek,sdjèéjnéçnd345jnsk3453ldc,qss_
Hash via md5 : c5f80bc76f6eafcc624f75eaf0a99e00
Disons qu'un cryptanalyse, par brute force arrive a trouver la chaîne originale (ce qui est improbable ici a cause de la longueur de la chaîne originale), en analysant manuellement (visuellement) la chaîne qu'il a trouver, il peux facilement et sans effort distinguer le mot de passe (qui généralement a un sens) du grain de sel ajouté (qui généralement n'est qu'une chaîne de caractères choisis aléatoirement).
Chaîne originale : 7sdfmDSoFsfn9s_dd3NJ_fsd(è-ç_'QNLmk,sodjètéjnDéçend3_45jpnsk3a453sldcs,qses_
Hash via md5 : 1505cb24899772f46a605ab96d11607a
Dans ce deuxième cas, même si le cryptanalyse arrive a trouver la chaîne originale, il ne pourra rien faire avec car le mot de passe a été dispersé dans le texte complet avant que le tout n'a été hashé, sauf si il possède plusieurs chaînes originales, dans ce cas il pourra les comparer afin de comprendre l'algorithme qui disperse les lettres dans le texte complet, mais bon, on lui aura quand même rendu la vie un peu plus difficile !
Concernant la longueur, l'algorithme md5 divise la chaîne d'entré en bloc de 512bits, c'est a dire 128 caractères, or, si ta chaîne d'entré n'a pas dépasser les 128 caractères, l'algorithme doit compléter avec des 1 et des 0, donc mieux vaut que tu remplisses le plus possible avec quelque chose qui vient de toi, plutôt que ça se remplisse automatiquement avec un truc par défaut.
labourette
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
6
17 déc. 2013 à 17:14
17 déc. 2013 à 17:14
Merci vraiment à vous tous.
labourette
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
6
17 déc. 2013 à 22:57
17 déc. 2013 à 22:57
Permettez moi de vous poser une question concernant le SHA1 dans la BDD MySQL.
Pour mettre les mots de passe en sha1 il faut le faire manuellement pour tous les mots de passes dans la BDD ?
Merci
Pour mettre les mots de passe en sha1 il faut le faire manuellement pour tous les mots de passes dans la BDD ?
Merci
JooS
Messages postés
2468
Date d'inscription
mardi 22 janvier 2008
Statut
Membre
Dernière intervention
8 juin 2016
228
Modifié par JooS le 18/12/2013 à 16:37
Modifié par JooS le 18/12/2013 à 16:37
ça dépend, si les mots de passes sont enregistrés dans leur état original :
UPDATE table SET pass = sha1(pass);
labourette
Messages postés
657
Date d'inscription
dimanche 24 août 2008
Statut
Membre
Dernière intervention
24 juillet 2016
6
19 déc. 2013 à 09:47
19 déc. 2013 à 09:47
Bonjour
Super très bien je te remercie.
Super très bien je te remercie.