PHP会话检查

时间:2014-08-19 15:47:26

标签: php security session

我有一个网站,用户可以登录,当他们做两个会话变量时设置:

if (validate_password($password, $user_hash))
{
    $_SESSION['usrnam'] = $username;
    $_SESSION['uid'] = $user_id;
    $stmt -> close();
    $con -> close();
    dirto_homepage();
    exit();
}

然后我会检查以显示页面上的元素:

if (isset($_SESSION['uid']) && isset($_SESSION['usrnam'])) {include ".....";} 

和......

$auth_id = $con -> real_escape_string($_SESSION['uid']);
$message = $con -> real_escape_string($_POST['message']);
$stmt = $con -> prepare("UPDATE `db_table` SET `data` = ?, `date_mod` = ? WHERE `id` = ? AND `author_id` = ?")

这样做安全吗? - uid只是数据库中用户详细信息的自动增量编号。有什么办法可以让用户登录检查更健壮吗?

2 个答案:

答案 0 :(得分:1)

如果您将其作为预设语句的绑定参数提供,则使用real_escape_string是错误的。绑定参数按字面处理,绑定机制负责保护值,因此您将转义字符存储到数据库中,这是您不想要的。如果你将值替换为SQL字符串,则转义只是necarry。

对于会话检查,这看起来很好。会话数据全部存储在服务器上,客户端只发送链接到它的会话ID,因此它们不能欺骗特定的会话值。有人可以做的唯一事情就是猜猜其他人的会话ID,然后他们就可以劫持他们的会话。没有太多可以做的事情来保护它。

答案 1 :(得分:-1)

这是关于该主题的深入文章

  

http://shiflett.org/articles/the-truth-about-sessions,   https://security.stackexchange.com/questions/23929/creating-secure-php-sessions

会话永远不会有100%的安全性......

不要相信这些贬低者,Chris Shiflett的文章非常宝贵。

在另一个帐户上见到你。 ;)