目前我开始的会议如下:
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'];
是否是开始会话的最佳方式,或者是否有更好的做法
感谢您的回复!
答案 0 :(得分:2)
您可以使用数据库作为存储点而不是文件系统来滚动自己的会话处理程序。这有几个安全优势,例如在共享主机上,例如,存储在文件系统中的会话数据可能会受到损害。正如我在评论中提到的那样,您也可以通过这种方式存储“源”IP地址并将其绑定到会话,并使从原始IP以外的IP访问的任何会话无效。
本文详细解释:http://shiflett.org/articles/storing-sessions-in-a-database
答案 1 :(得分:1)
$_SESSION['username']=$_POST['username'];
实际上并未启动会话,session_start()
会话。所以你的问题是错误的。
这行代码没有任何内在错误。
如果您想了解有关编写安全会话代码的一些信息,这不是一个糟糕的起点:http://phpmaster.com/php-sessions/
您可以搜索的两个安全关键字是“会话固定”和“会话劫持”。另外两个常见的安全问题是XSS攻击和CSRF攻击。
在stackoverflow上已经存在大量关于此主题的先前问题,您应该搜索。 For instance
答案 2 :(得分:0)
示例中没有显示,但我假设代码中有session_start()
?您可以在此处了解有关会话开始的更多信息:PHP Manual: Session Start