常密码检查?

时间:2013-01-22 22:51:31

标签: php login passwords

我已经在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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

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