0

我在stackoverflow上阅读了以下内容:

never store the users password or even a hash of the password in session or cookie data. 

我正在制作一个系统来检查恒定密码,如果它与会话中保存的密码不同,则强制注销;像facebook这样的东西吗?当您更改密码或密码已更改时,您将被注销。

我的代码如下:

function ConstantPassword($Password)
{
    if ($_SESSION['Password'] !== $Password)
    {
        include "Logout.php";
    }
}

但是,如果说不要在会话/cookie 中存储密码?什么可能是另一种解决方法?

4

4 回答 4

1

您可以将盐(或其哈希)存储在会话中。

更改密码应该会更改盐,这将使会话无效。

于 2013-01-22T22:52:32.170 回答
1

您可以进行一次检查,然后存储一个$_SESSION['logged_in'] = TRUE变量。在注销时,你unset($_SESSION['logged_in'])session_destroy()会话。无需在会话中输入密码或盐。

此外,你不应该自己实现密码,而是使用这个:https ://github.com/ircmaxell/password_compat这是 PHP 5.5 中的库。

于 2013-01-22T22:55:00.897 回答
0

检查密码一次,然后在数据库中存储一对 (random_hash,user_id) 并将 random_hash 放入会话中。

于 2013-01-22T23:01:13.543 回答
-1

如果您想避免在会话中存储密码,您可以存储最后一次密码更改的时间戳,并在每次请求时根据数据库验证它。

于 2013-01-22T22:58:18.890 回答