Crypter mot de passe
Fermé
jordxn
Messages postés
356
Date d'inscription
jeudi 15 avril 2010
Statut
Membre
Dernière intervention
26 avril 2015
-
24 nov. 2012 à 11:28
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 - 24 nov. 2012 à 12:13
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 - 24 nov. 2012 à 12:13
A voir également:
- Crypter mot de passe
- Voir mot de passe wifi android - Guide
- Mot de passe - Guide
- Trousseau mot de passe iphone - Guide
- Mot de passe administrateur - Guide
- Identifiant et mot de passe - Guide
1 réponse
HostOfSeraphim
Messages postés
6750
Date d'inscription
jeudi 2 février 2006
Statut
Contributeur
Dernière intervention
31 juillet 2016
1 608
24 nov. 2012 à 11:30
24 nov. 2012 à 11:30
Tu n'as pas besoin de le récupérer pour le renvoyer.
Solution 1 : tu mets un mot de passe temporaire à ton utilisateur avec un système qui, à la première connexion, l'oblige à changer son mot de passe.
Solution 2 : tu lui envoie un lien vers une page lui permettant de changer son mot de passe (que tu sécurises évidemment en transmettant dans l'URL un code "d'authentification").
Solution 1 : tu mets un mot de passe temporaire à ton utilisateur avec un système qui, à la première connexion, l'oblige à changer son mot de passe.
Solution 2 : tu lui envoie un lien vers une page lui permettant de changer son mot de passe (que tu sécurises évidemment en transmettant dans l'URL un code "d'authentification").
24 nov. 2012 à 11:32
L'utilisateur entre son email, valide et le mail est envoyé avec ce fichier php
<?php
if(!empty($_POST['email']))
$email = $_POST['email'];
else
exit("mail vide.");
//pas besoin de faire un count
$sql = "SELECT email FROM users WHERE email = '".$email."' ";
$req = mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
if(mysql_num_rows($req) != 1)//si le nombre de lignes retourne par la requete != 1
exit("mail inconnu.");
else
{
$row1 = mysql_fetch_assoc($req);
$retour = mysql_query("SELECT password FROM users WHERE email = '".$email."' ");
$row2 = mysql_fetch_assoc($retour);
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$objet = 'Récupération de votre mot de passe';
if(!mail($row1['email'], $objet, $row2['password'], $headers))
echo 'probleme lors de l\'envoi du mail';
else
echo 'mail envoye';
}
?>
Sauf que j'aimerais sécurisé ma BD en cas de vol ...
24 nov. 2012 à 11:35
Tu ne DOIS PAS renvoyer le mot de passe en clair à ton utilisateur. C'est le B.A-BA de la sécurité informatique.
Parce que si quelqu'un lit son écran en même temps que lui quand il ouvre ton mail, l'autre personne connaîtra son mot de passe. Et si c'est le même sur X sites, il est dans la merde.
Parce que si il ne pense pas à supprimer son mail, toute personne accédant ensuite à sa boîte pourra retrouver ce mot de passe.
Tu dois donc développer un système, basé sur une des deux solutions proposées plus haut (mais ce ne sont pas les seules !), qui permettra à ton utilisateur de changer son mot de passe sans devoir le lui renvoyer.
24 nov. 2012 à 11:39
24 nov. 2012 à 11:51
Un simple formulaire qui demande le nom d'utilisateur ou son adresse e-mail... ensuite :
1 - on calcule le hash MD5 de l'heure accolée au du nom d'utilisateur (par exemple).
2 - on met ce hash dans un champ "code_nouveaumotdepasse" (par exemple) de ta table.
3 - on envoie un mail à l'utilisateur avec un lien, par exemple nouveaumotdepasse.php?code=XXX (où XXX est le hash calculé en 1).
Pour nouveaumotdepasse.php :
1 - on vérifie que le code dans l'URL correspond bien à un code figurant dans ta table
2 - si c'est OK, on demande à l'utilisateur son nouveau mot de passe, on calcule le hash, et on met à jour dans la table
3 - on supprime le contenu du champ "code_nouveaumotdepasse" (afin que ça ne fonctionne plus).
Eventuellement tu peux également demander l'adresse e-mail ou le nom de l'utilisateur dans ton formulaire sur nouveaumotdepasse.php pour t'assurer que ça ne soit pas quelqu'un qui soit tombé par hasard sur le lien...
Idéalement il faudrait aussi limiter en terme de temps la possibilité de changer le mot de passe. Un champ supplémentaire avec la date et l'heure où l'utilisateur a demandé à pouvoir changer son mot de passe, pour que dans nouveaumotdepasse.php, tu puisses calculer le delta entre la demande de l'utilisateur et le moment présent : si le delta est supérieur à 24 heures (par exemple), on ne fait rien et on invite l'utilisateur à recliquer sur "j'ai paumé mon mot de passe".
24 nov. 2012 à 11:57
Je suis étonné de pas trouvé une solution toute faite sur internet a ce sujet.
Pour en revenir a vos explications.
Je saurais faire le formulaire pour demander son email ou son adresse mail mais pas calculer le hash MD5 ...