在php中使用会话进行身份验证的正确方法是什么?

时间:2014-08-17 06:50:27

标签: php security session authentication login

目前我所做的是在成功登录会话变量后存储用户的用户名。

$_SESSION['session_loggedin'] = $post_username;

post_username是提交表单中的POST。

然后我使用此会话变量来检查它是否已设置,以查看用户是否已登录。我使用此变量的值来显示特定于用户的内容。

                <?php
                if (isset($_SESSION['session_loggedin'])) {
                    ?>
                        <a href="logout.php">LOGOUT</a>
                     <?php
                }
            ?>

这会是如何使用会话的吗?这是安全显示内容的正确方法吗?我该如何防止劫持?

由于

2 个答案:

答案 0 :(得分:0)

你快到了!但是你应该在会话中存储用户的id。您查询数据库,其中用户名等于发布用户名和密码等于发布密码,计数行数返回!从那里,您将用户的ID存储在会话中。

答案 1 :(得分:0)

要了解如何使用PHP会话,请访问:http://www.w3schools.com/php/php_sessions.asp 。不,因为我可以进入你的其他页面(假设你有一些)并插入用户名,即如果John Smith使用密码登录:密码很好,但我可以进入你的网站并将John Smith作为$_SESSION['session_loggedin']并且离开他的帐户。您可能会问,但他如何知道$_SESSION['session_loggedin']如果他聪明,他会创建一个用户并捕获会话并查看他需要输入什么来获得对另一个帐户的控制权。我会推荐一个哈希码而不是用户名!

请参阅此劫持:What is the best way to prevent session hijacking?