我是新手,刚开始接触php Sessions。我的用户数据很少且不太敏感,但当然我仍希望网站安全。我已经在数据库中存储了他们的密码哈希值和盐。
我是否需要在每个页面上都使用密码验证用户,还是这太过于繁琐?换句话说,如果他们已经成功“登录”,并且我已将他们的用户名存储在php会话中,那么他们能够自由地浏览网站,让网站知道他们是谁,这样就足够了吗?
我之所以问这个问题,是因为似乎将用户的密码存储在会话中可能不是最好的想法。这是真的吗?
function isAuthorized() {
return isset($_SESSION['user_id']) && ($_SESSION['user_id'] != 0);
}
您可以通过在数据库中管理自己的会话数据来使其更加安全,这样您就不必对cookie抱有太多信心,因为它们可能会被(恶意)用户交易/盗窃等。但是对于大多数Web应用程序来说,这通常是过度保护。
我不会把密码存储在会话中,你只需要在会话中存储他们已经登录即可。
$_SESSION['uerlogged'] = $mytoken;
每次页面加载时,检查$_SESSION ['userlogged']
是否设置。
您可能还希望考虑添加会话劫持的预防措施,请参考 - PHP:使用作为cookie存储的令牌防止会话劫持?
在会话中存储密码其实并不是必要的。你应该使用状态标志来显示用户当前是否已经通过身份验证,以及一些定义用户身份和相关信息的对象。
将密码存储在会话中与用户登录后将用户名存储在会话中没有任何区别,因此不要存储密码。
它将像存储的用户名一样工作,这已足够(即使使用标志也可以)。
用户无法修改会话,您只能在那里存储用户名,并相信它始终是正确的。