0

我目前正在使用http://www.openwall.com/phpass/来散列我的密码。

即使输入相同的密码,散列也会产生不同的散列。

我检查密码是这样的:

$verify = $hasher->CheckPassword($password, $info['password']);

$password是输入的值,$info['password']是数据库中的哈希值。

现在,我正在设置这样的cookie:

setcookie(user, $_POST['username'], $hour, $path); 
setcookie(pass, $_POST['password'], $hour, $path);

这导致我的 cookie 是没有任何散列的密码。如何使存储密码的 cookie 更安全?

如果我不能将它们存储在 cookie 中,我将它们存储在哪里?

4

1 回答 1

1

不要在任何地方存储密码,特别是不要在 Cookie 中。

要让用户保持登录状态,请使用会话。会话 cookie只包含一个无意义的随机 id,而在服务器端您只需将用户的 id 存储在会话中:

$data = /* get user record from database based on username */;

if ($hasher->CheckPassword($_POST['password'], $data['password'])) {
    session_start();
    $_SESSION['userid'] = $data['userid'];
}

不需要更多了。您无需将密码存储在任何地方或重复此密码检查。只需查看$_SESSION['userid']以识别用户。

阅读手册中有关会话的更多信息:http ://www.php.net/manual/en/book.session.php

于 2013-02-19T16:56:36.270 回答