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
Bonjour,

J'aimerais crypter les mots de passe du formulaire d'inscription vers ma BD
Mais je sais pas comment faire.
Md5 c'est pour hashé mais moi je veux le crypter pour le recuperer en cas de perte du mot de passe afin de le renvoyer.
A voir également:

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
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").
0
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 1
24 nov. 2012 à 11:32
J'ai deja le programme enfaite.
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 ...
0
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:35
Non, non, non et non !

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.
0
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 1
24 nov. 2012 à 11:39
Oui mais je saurais pas faire cela :/
0
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:51
Rien de bien compliqué...

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".
0
jordxn Messages postés 356 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 26 avril 2015 1
24 nov. 2012 à 11:57
Merci pour vos explications.
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 ...
0