php - 用于插入 MySql 数据的网站中的 PHP SESSION 是否安全

标签 php mysql security session

我有一个网站,如果登录成功,我会在其中创建 UserID session 。

$email = mysql_real_escape_string($_POST["email"]);
if(LOGIN SUCCESSFUL) {
$_SESSION['userID'] = $email;
}

然后在我向 MySql 输入任何数据的整个站点中,我从 $_SESSION['userID']

插入 user_id

我不知道它有多安全,如果不安全,请建议我使用任何安全的方法来完成这一切。

最佳答案

从根本上说,它没有任何问题 - 正如 Barmar 所说,您存储在 $_SESSION 中的任何内容都是合理安全的。但是,在内部使用用户的电子邮件作为主要 ID,并将用户 ID 直接存储在 $_SESSION 中,在体系结构上并不是一个好主意。

更常见的方法是更抽象一点:在 $_SESSION 中只存储一个 session ID。

该 ID 通常指向“ session ”数据库表。该表中的每个 session 都有一条记录,及其状态 - 创建时间、超时时间、用户是否登录等。

理论上您可以将所有这些直接存储在 $_SESSION 中,但是这样您就没有一个中心位置可以看到当前登录的用户,这对于故障排除很重要,并且可以立即注销所有人。

“ session ”表将包含一个用户 ID,它指向一个单独的“用户”表。该 ID 理想情况下是一个数字自动增量值,而电子邮件只是用户表中的一列。这允许与其他表的关系保持不变,即使在电子邮件发生变化时也是如此。使用 ID,您可以从该表中获取电子邮件地址。

它更复杂,但在边缘情况下可以为您省去很多麻烦,例如当用户更改他们的电子邮件地址时。

关于php - 用于插入 MySql 数据的网站中的 PHP SESSION 是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21205399/

相关文章:

mysql - Excel WEEKNUM() 与 MySQL YEARWEEK()

php - 仅限生产的错误 : em dashes not appearing correctly

security - 客户端服务器套接字安全

php - sql 查询是否免受 googlebots 攻击(google sql 注入(inject))

ruby-on-rails - 有什么聪明的解决方法可以避免在任何地方输入 h 方法?

php - 带有 echo 的窗口背景图像显示

php - SMTP 错误 : Failed to connect to server: Connection refused (111) ERROR MESSAGE

php - PDO 和类出现 'PDOException' 错误

mysql - 加入 mysql 表并获取多行

php - 使用正则表达式验证类/方法名称