PHP会话安全提示

sar*_*hak 2 php security session

这就是我目前在登录页面上创建会话的工作.

if($count==1) {

   $_SESSION['username'] = $username;
   $_SESSION['password'] = $password;
}
Run Code Online (Sandbox Code Playgroud)

我知道这是非常基本的,我需要保护用户会话.你能给我一些基本的建议吗?如果您可以编辑代码并编写安全代码,那就太棒了.谢谢.

目前,我使用电子邮件地址作为会话用户名.

Rob*_*itt 6

问自己这个问题:

  • 当用户名在数据库中是唯一的时,为什么要存储密码

在你回答说你应该得出它没有意义的结论之后,你可以在登录系统中将用户名或用户ID存储在会话中.

登录系统的工作方式是,用户将表单中的用户名密码发送到验证过的服务器,在验证过程中从数据库中选择用户where username = post_username.

如果没有找到行,则用户不存在,因此您可以在该点直接发送输出,如果用户确实存在,则将密码与post_password进行比较.

我们仅通过用户名选择行的原因是您应该合并某种散列系统以增加额外的安全性.

如果您将密码存储为(密码+哈希)这将是一个新字符串,您也将只存储哈希,因此如果找到一个用户,那么您可以创建一个哈希(post_password + db_hash)并检查它是否与db_password.

这样,如果您的数据库以某种方式泄露您的用户凭据更安全.

一旦用户被验证,您将在会话中存储用户ID,然后在每个页面加载时,您可以检查id是否在会话中,如果用户当前已登录,您可以通过以下方式选择用户数据:SELECT * FROM users WHERE id = session_id.

这应该让你开始.