在 mysql 中使用加密存储密码进行摘要身份验证

Posted

技术标签:

【中文标题】在 mysql 中使用加密存储密码进行摘要身份验证【英文标题】:Digest authentication with encrypted stored password in mysql 【发布时间】:2014-07-21 17:40:47 【问题描述】:

我想在我的网站上实施摘要认证。但是,我有一个带有加密用户表的用户表。我知道如果我使用基本身份验证,我可以加密 $_SERVER['php_AUTH_PW'] 。我们如何使用相同的方法进行摘要身份验证?

【问题讨论】:

php.net/manual/en/features.http-auth.php 我需要在 db 中加密密码的解决方法 【参考方案1】:

你在寻找这样的东西吗?

define('MY_REALM', 'THIS IS A SECURE FACILITY, AND I MEAN THAT UNIRONICALLY');
$valid = false;
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']) 
    // Use your DB here; prepared statements are your friend:
    $userData = $user->getByUsername($_SERVER['PHP_AUTH_USER']); 
    if (!empty($userData)) 
        $valid = password_verify($_SERVER['PHP_AUTH_PW'], $userData['password_hash']);
    

if (!$valid) 
    header('WWW-Authenticate: Basic realm="'.MY_REALM.'"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;

HTTP 摘要身份验证方法几乎没有什么好处。只需在您的网站上使用 HTTPS 并使用 password_hash() 存储密码,然后使用 password_verify() 进行检查。

【讨论】:

以上是关于在 mysql 中使用加密存储密码进行摘要身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vba 中使用 Bcrypt.Net 对 PHP 中 crypt 函数存储的密码进行身份验证

使用 MySQL 对用户进行身份验证的最佳方式(接受其他建议)?

摘要和基本身份验证有啥区别?

36. ClustrixDB 使用ClustrixDB加密连接

MySql8.0+全新身份验证方式

具有单向加密密码的 HTTP Digest Auth