你好,美好的一天,我是 PHP 新手。我有完整的注册、登录和密码恢复表格。我正在本地主机上使用 XAMPP。
一切正常,但是当通过邮件恢复密码时,它以与存储在加密数据库中相同的形式到达。
我的注册表数据库是 id、Name、Email、Password、User-id 等。登录由 login.html 组成,并以 action="verif-login.php" 的形式找到这些值:
$hash = $row['Password'];
(password_verify($_POST['password'], $hash))
如何通过发送邮件到达的 URL 创建与哈希一起使用的密码更改。(发货已经安排好了)
我希望你能帮我解决这个让我疯狂了一个多星期的问题。
出于安全原因,您不应解密密码。即使您使用非常容易解密的 MD5(如果您使用 MD5,您的系统也很容易受到攻击)。
一个简单的可能性是将用户发送到密码恢复链接,他必须在其中输入他的电子邮件。在后端,您创建一个随机密码以发送到他的电子邮件,并说明这是一个他必须更改的临时密码。
其中 generatePassword() 返回一个随机密钥,例如:
你把它
$claveEncriptada
保存在数据表中,$clave
然后以明文形式发送到用户的电子邮件中。您无法破解使用 bcrypt 存储的密码。这就是使用加密哈希函数的全部意义所在。
您所能做的就是检查给定的密码是否匹配(参见代码示例)。这种方法可以对许多候选者重复应用,这被称为“暴力攻击”,对于强密码是不可行的。