为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以使用 PHP 的password_hash在 SQL 中设置默认用户的密码?

是否可以使用 PHP 的password_hash在 SQL 中设置默认用户的密码?

PHP
繁星淼淼 2022-09-25 20:25:31
我的旧 PHP 应用程序具有默认管理员用户和由创建数据库的 SQL 创建的 md5 加密密码:insert into users values ( 1, 'admin', MD5('changeMe'), 2 );有没有一种简单的方法可以使用PHP的passowrd_hash功能在创建表时包含默认用户和加密密码?我问,因为我明白password_hash是一个原生的PHP函数,我认为它在SQL中不会被理解。
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

我的问题的解决分为三个部分。我的OP寻求一种简单的方法,使用本机PHP函数为管理员用户创建哈希密码,以便在安装应用程序时插入MySQL数据库中。password_hash()


(1)根据@Nick和@Tadman的建议,我决定将设置哈希合并到安装程序脚本中,该脚本不仅可以设置哈希,还可以设置其他定义的站点/应用程序变量。


创建数据库表时,不是插入用户值,而是将其推迟到紧随其后,管理员用户以插入哈希并将其他定义写入文件的形式输入其凭据:


$userpass = $_POST['userpass'];

echo password_hash($userpass, PASSWORD_BCRYPT);

(2)我问题的第二部分是替换password_hash()'的所有实例,我通过使用我在网上找到的整洁的PHP脚本来递归搜索和替换服务器上的实例来实现这一点。md5()`` with


替换了实例后,我需要更改哈希比较方法,并且通过搜索相关文件,我能够替换以下实例:md5()


if ($p != $theUser->pwd ) {

    return( false );     }

跟:


if(password_verify($p, $theUser->pwd)) {

    // Success!

    }

else {

    // Invalid credentials

echo "Uh oh!";

    }

(3)解决问题的第三步是发现在md5哈希的开头添加$ 1 $可以使其可读,因此我只需要在已安装的数据库中对管理员用户的旧密码进行一些调整即可。password_hash();


感谢那些帮助照亮光明的人,所以我可以找到自己的路。我现在要去发明轮子和切片面包。


查看完整回答
反对 回复 2022-09-25
?
慕容森

TA贡献1853条经验 获得超18个赞

你可以在php中做这样的事情:

$hash = password_hash('changeMe'); 
//echo $hash;

然后在数据库中使用此哈希。


查看完整回答
反对 回复 2022-09-25
  • 2 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信