【问题标题】:PHP Forgotten password recoveryPHP忘记密码恢复
【发布时间】:2019-10-07 15:12:45
【问题描述】:

我正在处理我的 uni 项目,但我坚持密码恢复。 一切正常,发送邮件,输入新密码,然后进入数据库。 但问题是它没有 md5 加密,并且在我的数据库中很明显。如何在 md5 中实际加密它。 下面是我的代码:

<?php

$email = $_POST["email"];
$reset_token = $_POST["reset_token"];
$new_password = $_POST["new_password"];

$connection = mysqli_connect("localhost", "root", "", "registration");

$sql = "SELECT * FROM users WHERE email = '$email'";
$result = mysqli_query($connection, $sql);
if (mysqli_num_rows($result) > 0)
{
    $user = mysqli_fetch_object($result);
    if ($user->reset_token == $reset_token)
    {
        $sql = "UPDATE users SET reset_token='', password='$new_password' WHERE email='$email'";
        mysqli_query($connection, $sql);

        echo "Password has been changed";
    }
    else
    {
        echo "Recovery email has been expired";
    }
}
else
{
    echo "Email does not exists";
}

正如我已经在这里问过的,如何设置令牌 24 小时而不是永远。 对不起,我对这一切有点新手。

问候。

【问题讨论】:

  • 只需将您的new_password 编辑为$new_password = md5($_POST["new_password"])
  • 了解prepared statements以防止sql注入。
  • 非常感谢大家。约瑟夫欢呼。 @Jens 是的,伙计,我听说了,肯定会这样做。
  • 不要使用 MD5。这是非常不安全的——你还不如存储纯文本。

标签: php


【解决方案1】:


要加密密码/字符串,可以使用 PHP 函数password_hash() 我个人不推荐使用 MD5,因为使用彩虹表很容易破解 MD5 哈希。要进行测试,请创建一个 MD5 字符串,然后将其输入https://www.crackstation.net
我的建议是使用河豚。
如果你想知道如何在你的脚本中实现它:

$new_password = password_hash($_POST['new_password'], PASSWORD_BCRYPT);
// BRYPT is hashing / encrypting it using Blowfish which is a very powerful encrypting method.

如果您想获得更好的安全性,可以使用盐。 欲了解更多信息:
What is SALT and how do i use it?
如果归结为安全性,您的 SQL 查询是不安全的,并且容易受到 SQL 注入的攻击。 (How can I prevent SQL injection in PHP?)
如果您不知道它是什么,简而言之:SQL 注入是一种修改 SQL 查询的方法。更多信息:https://www.w3schools.com/sql/sql_injection.asp
使用准备好的语句来保护你的 SQL 代码,否则任何黑客都可以毫不费力地进入你的 MySqli 数据库。
我希望这对你有帮助,
诚挚的问候,

PS。如果您想再次登录并检查用户输入的密码是否正确,请使用password_verify() 验证用户是否使用正确的密码登录。

【讨论】:

    【解决方案2】:

    使用

    password=MD5($new_password) 
    

    在您的更新查询中它会起作用,如果您遇到任何类型的错误,只需复制整个查询并在您的 phpmyadmin 的 SQL 部分中删除它,不要忘记用实际值替换所有变量 找到你的错误会很有帮助

    【讨论】:

    • 如果密码不是整数会导致语法错误。
    猜你喜欢
    • 1970-01-01
    • 2017-07-05
    • 2012-02-28
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2015-03-08
    • 1970-01-01
    相关资源
    最近更新 更多