【发布时间】:2020-05-31 21:56:30
【问题描述】:
我的旧 PHP 应用程序有一个默认管理员用户和由创建数据库的 SQL 创建的 md5 加密密码:insert into users values ( 1, 'admin', MD5('changeMe'), 2 );
是否有一种简单的方法可以在创建表时使用 PHP 的 passowrd_hash 函数包含默认用户和加密密码?我问是因为我知道 password_hash 是一个原生 PHP 函数,我认为它不会在 SQL 中被理解。
【问题讨论】:
-
您可以在 PHP 解释器中使用
echo password_hash('changeMe');并在查询中使用结果字符串。 -
使用
password_hash生成哈希并然后插入它。 -
警告:编写访问控制层并不容易,而且有很多机会严重错误。任何现代的development framework 像Laravel 都带有一个内置的authentication system,并且您可以使用authentication libraries。至少遵循recommended security best practices 并且永远不要将密码存储为纯文本 或像 SHA1 或 MD5 这样的弱哈希。
-
将尝试@Nick 和 tadman 的方法。从长远来看,我会尝试编写一个安装程序来插入一个空的用户表。
-
您在此处描述的内容通常称为“数据库种子”,因为您需要添加到数据库中以从无到有引导。许多框架都有正式的方式来声明这些。在您自己的临时应用程序中,您需要发明并记录您自己的方法。例如,如果您执行
echo password_hash('defaultpassword')的结果,您可以创建一个 SQL 文件。请记住,通常最好在播种过程中生成一个随机密码并将其回显到屏幕上,以便用户可以使用它。
标签: php mysql encryption