有没有一种方法可以直接在与 PHP 兼容的 MySQL 中哈希密码?

-5 php mysql authentication hash password-hash

基本上,我的任务是为网站创建一个登录系统,但是他们希望管理员创建凭据,确定谁应该或不应该访问网站的锁定部分。我知道使用PASSWORD()inMySQLpassword_hash()/password_verify()in PHP,但是这两个系统的散列方式不同,因此不能一起使用。有谁知道如何安全地以易于使用的方式执行此操作(由于一些管理员不太熟悉这种类型的编码,我希望输入系统保持尽可能简单)?任何帮助将不胜感激,提前谢谢!

使用PASSWORD()inMySQL进行哈希和password_verify()inPHP进行 unhash 进行密码验证。我本来希望这能起作用,但显然他们使用不同的哈希系统来解密不正确,并且当输入用户正确的密码时返回登录错误而不是成功登录。

tad*_*man 7

MySQL没有任何bcrypt函数,所以你基本上不能。

这种验证应该在应用层完成。测试密码的设计速度password_verify()非常慢,这是 bcrypt 的一个关键安全功能。

如果您可以在数据库中执行此操作,则会对通常是关键共享资源施加很大的负载。扩展应用程序服务器很容易,您通常只需添加更多服务器,但添加更多数据库服务器却非常重要。

我不确定为什么您需要数据库级密码验证功能,因为这应该是您的应用程序层所关心的。

请记住,有许多不同的密码哈希系统,其中一些非常糟糕。MySQL 的旧哈希方法实际上并不是那么难以破解,这可能就是为什么其目的是使其在应用程序代码中使用不方便,因为它不适合该用途。

  • @DadijoPenguinez 这并没有否定应用程序层应该处理它。这并不意味着它必须是一个注册组件。尽管我想说让管理员制作凭据也是不好的做法。如果您确实不希望用户出于某种原因设置密码,您可以简单地自动生成密码,这样更安全。_管理员也不应该知道用户密码,只有用户自己应该知道_。 (6认同)