我已经在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放入会话中。
如果要避免在会话中存储密码,可以改为存储上次密码更改的时间戳,并在每个请求时根据数据库对其进行验证。