持续的密码检查


Constant Password Checking?

我已经在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中?还有什么解决方法呢?

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

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

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

更改

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

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

如果要避免在会话中存储密码,可以改为存储上次密码更改的时间戳,并在每个请求时根据数据库对其进行验证。