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

时间:2014-07-21 17:40:48

标签: php mysql encryption basic-authentication digest-authentication

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

1 个答案:

答案 0 :(得分: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()进行检查。