0

目前我正在开始一个会话,如下所示:

if ($hasher->CheckPassword($password, $hash)) { //$hash is the hash retrieved from the DB 
        $what = 'Authentication succeeded';
            $_SESSION['username']=$_POST['username'];
         header('Location: securedpage1.php');
    } else {
        $what = 'Authentication failed';
        echo "Incorrect Password";
        include 'login.php';
        exit();

    }

如您所见,我想知道是否$_SESSION['username']=$_POST['username'];是开始会话的最佳方式,或者是否有更好的做法

感谢您的任何回复!

4

3 回答 3

2

您可以使用数据库而不是文件系统作为存储点来滚动您自己的会话处理程序。这有几个安全优势,例如在共享主机上,存储在文件系统中的会话数据可能会受到损害。正如我在评论中提到的,您还可以以这种方式存储“源”IP 地址并将其绑定到会话,并使从原始 IP 以外的 IP 访问的任何会话无效。

这篇文章解释得很详细:http ://shiflett.org/articles/storing-sessions-in-a-database

于 2012-09-07T13:12:03.590 回答
1

$_SESSION['username']=$_POST['username'];实际上并没有开始会话,session_start()确实如此。所以你的问题放错地方了。

那行代码本质上没有任何问题。

如果您想了解有关编写安全会话代码的一些信息,这不是一个糟糕的起点: http: //phpmaster.com/php-sessions/

您可以搜索的两个安全关键字是“会话固定”和“会话劫持”。另外两个常见的安全问题是 XSS 攻击和 CSRF 攻击。

stackoverflow 上已经有很多关于这个主题的问题,你应该搜索一下。例如.

于 2012-09-07T13:13:19.953 回答
0

它没有在示例中显示,但我认为 asession_start()在您的代码中某处?您可以在此处了解有关会话开始的更多信息:PHP Manual: Session Start

于 2012-09-07T13:08:01.557 回答