首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >密码提示使用MD5加密密码

密码提示使用MD5加密密码
EN

Stack Overflow用户
提问于 2014-11-16 11:33:07
回答 1查看 209关注 0票数 0

我在创建“忘记你的密码?”我网站的网页。

显然,当新用户创建帐户时,php脚本使用md5算法对密码进行加密。

现在,一切正常运行,除了当用户使用“忘记密码页”请求密码提醒时,他接收的电子邮件返回用md5加密的密码,而不是真正的密码。

下面是我正在使用的代码。

代码语言:javascript
复制
$query2="SELECT password FROM users WHERE email='$email'";
$risultato2 = mysql_query($query2) or die ($query2);
while ($row = mysql_fetch_array($risultato2))
{
     $passToSend = md5($row['password']);
}

echo "<center>We have sent an e-mail to <b>".$email."</b> containing a link to recover your     password.</center>";

$mittente = 'From: "My website" <mywebsite@service.com> '; 
$destinatario = $email;  
$oggetto = "Recover your password"; 
$messaggio = "The password you've choosen during the sign up process is: ".$passToSend."\n\nIf    you'd like to change your password, please visit    http://www.mywebsite.com/mydashboard/changepwd.php\n\n Please ignore this message if you haven't requested a password reminder.";                 
mail($destinatario, $oggetto, $messaggio, $mittente);

我能做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-16 11:41:29

永远不要试图提供一个功能,让人们恢复他们的密码。如果您正确地存储密码,那应该是不可能的。

注意:在将密码放入数据库之前,您应该先对它们进行散列,而不是当您取出密码时,MD5是一种不合适的散列算法,因此您需要对用户的密码进行小心点

生成一个由随机字符组成的令牌(使其相当长)。将其存储在其用户id (或用户表的主键)旁边的一个表中和一个时间戳中。发送电子邮件给用户(为了方便起见,将其嵌入URL中)。当他们遵循链接时,给他们一个表单,允许他们为他们的帐户设置一个新密码(您可以从令牌中识别这个密码)。

删除令牌后,重新设置密码,它应该是一次性使用令牌。

删除带有cron作业的某个时间段(例如24小时)后未使用的令牌。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26956453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档