PHP SESSION在网站中是否安全,用于插入MySql数据

Ari*_*rif 3 php mysql security session

我有一个网站,如果登录成功,我会创建一个UserID的会话.

$email = mysql_real_escape_string($_POST["email"]);
if(LOGIN SUCCESSFUL) {
$_SESSION['userID'] = $email;
}
Run Code Online (Sandbox Code Playgroud)

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

我不知道它有多安全,如果没有,请告诉我任何安全的方法来做这一切.

Pek*_*ica 5

它没有任何根本性的错误 - $_SESSION正如Barmar所说,你存储的任何东西都是合理安全的.但是,在内部使用用户的电子邮件作为主要ID,并直接存储用户ID,在$_SESSION架构上不是一个好主意.

更常见的方法是更抽象:只存储会话ID $_SESSION.

该ID通常指向"会话"数据库表.该表中的每个会话都有一条记录,其状态 - 创建时间,超时时间,用户是否已登录等.

理论上你可以直接存储所有这些,$_SESSION但是你没有中心位置,你可以看到谁当前登录,这对于故障排除很重要,并立即注销所有人.

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

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