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

标签 php mysql encryption basic-authentication digest-authentication

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

最佳答案

你在找这样的东西吗?

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() 来检查它们。

关于php - 在 mysql 中使用加密存储的密码进行摘要式身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24871328/

相关文章:

php - 模板 Blade 中的 Laravel 语言处理程序

java - 如何将 IF NOT EXISTS 语句用于 ALTER TABLE 语句?

mysql - 切换到 mysqli 并需要一种新方法来获取永久链接

mysql - 在shell脚本中加密密码

php - 如何使用 PHP 生成 Google ReCaptcha V2 安全 token ?

java - 如何使用 bouncy caSTLe 加密数据同时确保结果是确定性的

javascript - 如何隐藏我的下拉菜单?

javascript - 如何使用 javascript 代码刷新 php 文件?

javascript - 使用特定 .json 文件的 HTML 表单将 .json 文件加载到 HTML 模板

c - 我如何让它解码(Perl cbc-crypt 到 C cbc_crypt 转换)