我受到Code Review上的一个问题的启发,该问题归结为:在没有数据库的情况下对用户进行身份验证的正确方法是什么?
如果您将凭证存储在一个数组、一个 XML 文件,甚至只是一个纯文本文件中,这会是完全相同的过程吗?
例如,让我们检查以下 PHP 代码:
$credentials = array(
'UserA' => '$2y$10$PassForA',
'UserB' => '$2y$10$PassForB'
);
$username = $_POST['username'];
$password = $_POST['password'];
if (isset($credentials[$username]) && password_verify($password, $credentials[$username])) {
// Successfully authenticated
} else {
// Permission denied
}
这是一种完全可以接受的存储凭据的方式吗?如果我们要从外部文件 (XML/txt) 中获取用户名和散列密码,是否需要区别对待?