我已经在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中存储密码?什么可能是另一种解决方法?
答案 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)
如果您想避免在会话中存储密码,您可以存储最后一次密码更改的时间戳,并在每次请求时对数据库进行验证。