跟踪登录用户信息的最佳方式

时间:2014-07-02 07:32:14

标签: php database security pdo

我已经构建了多个已经使用PHP的站点,允许用户登录并在会话变量中保留他们的用户ID和用户名。我一直在学习更多有关安全性的知识,我想了解一下最安全的方法来存储用户信息。

我目前正在开发一个用户帐户页面,该页面允许用户查看和编辑他们的个人资料信息。目前,该站点执行一个简单的MySQL查询,根据会话中存储的id来从数据库中提取用户信息。

示例:

$getUserInfoSQL = $connection->prepare("SELECT * FROM Accounts WHERE id = ?");
$getUserInfoSQL->bind_param("s",$userid);
$getUserInfoSQL->execute();

我只想确保根据会话变量userid提供用户信息并非鲁莽。

2 个答案:

答案 0 :(得分:1)

您可以轻松使用会话来存储用户数据,因为会话内容存储在您的服务器上。但是,在会话中存储userdata可能会导致一些问题:

  • 如果您是禁止用户,会话仍然是活动的,用户可以浏览您的网站,即使它不在数据库中
  • 如果用户在两台计算机(例如计算机和智能手机)上登录,并在一台设备上更改用户数据,则必须在设备上更新用户数据,然后再更新用户数据会话包含过时的信息。
  • 服务器重启可以擦除会话数据

答案 1 :(得分:0)

使用会话变量应该足够安全。保存在服务器上的会话数据和本地存储在用户端的唯一内容是会话ID。

PHP将会话数据存储在服务器上的文件中,但您也可以将其存储在数据库中。它的速度要快一点,也应该更安全。 - 查看RobertPitt在https://stackoverflow.com/a/2950504/859999的答案,了解如何在数据库中存储会话数据。