【问题标题】:How can I encrypt my cookie or session to work with phppass?如何加密我的 cookie 或会话以使用 phppass?
【发布时间】:2013-02-20 01:33:39
【问题描述】:

我目前正在使用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 中,我会将它们存储在哪里?

【问题讨论】:

  • 您是否有特定原因要将密码存储在 cookie 中,因为您确实不应该这样做。
  • 这真的是不好设置传递到cookie。改用会话。
  • 您想回答使用会话的问题吗?
  • 会话。这些存储在服务器上,但即使在会话中您也不需要存储密码。
  • 会话不是只存储到浏览器关闭吗?

标签: php cookies bcrypt


【解决方案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

【讨论】:

猜你喜欢
  • 2020-05-24
  • 2018-12-24
  • 2017-05-30
  • 2013-10-06
  • 2012-05-27
  • 1970-01-01
  • 2010-12-28
  • 2015-12-19
  • 2017-04-22
相关资源
最近更新 更多