如果用户成功输入密码和用户名,并且您想设置会话,会话应包含哪些数据?我对此很困惑,我读过它应该是一个随机生成的字符串,我可以存储哈希的user_id + salt吗?我希望能够验证这确实是正确的用户:
表格:
<form method="POST" action="">
<input type="hidden" name="auth_token" value="<?php echo $form_token; ?>">
Username: <input type="text" name="username">
Password: <input type="password" name="password">
<input type="submit" name="action" value="Login">
</form>
我想做以下事情:
if form token in session = form_token var in form
if username and password are correct
set session hash(user_id + salt)
修改:忘记添加,它很可能是在共享托管上。
答案 0 :(得分:7)
您只需将用户ID存储在会话数组中即可。只有会话ID cookie被发送到浏览器,“外部世界”不知道会话本身存储的内容。存储显示用户已通过身份验证的内容也很方便。
永远不要在任何地方存储明文密码。
$_SESSION["UserAuthenticated"] = true;
$_SESSION["UserID"] = $userID;
答案 1 :(得分:1)
您的会话应包含用户的用户名或其他内部用户ID。
不需要哈希,盐等,因为会话数据存储在您的服务器上,而不是用户的机器上作为cookie存储。也没有必要以任何形式存储密码,因为您已经对它们进行了身份验证。
答案 2 :(得分:1)
有些人只会存储ID。你对盐水哈希版本的想法就足够了,但看起来有点过分。在后续页面加载时,请根据数据库验证ID。
答案 3 :(得分:1)
是否有理由避免使用简单的布尔值来表明用户已经过身份验证?如果没有,那么我建议:
<?php
if ($_POST["username"] == 'test' && $_POST["password"] == 'test') {
$_SESSION['authenticated'] = true;
}
?>