2012-09-07 34 views
0

目前我开始一个会话如下安全会话:PHP如何启动

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'];是启动一个会话或者有更好的做法

的最佳途径

谢谢你的回复!

+2

我会检索用户的ID并将其存储在会话中。我喜欢我的会话数据被认为是理智的,而有效的ID就是一个例子。 – Kos

+0

谢谢你的回复,你能否解释我将如何检索用户ID并将其存储在会话中? – neeko

+0

什么是“安全会话”,为什么你认为你当前的会话不安全? – zerkms

回答

2

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

本文介绍的很详细:http://shiflett.org/articles/storing-sessions-in-a-database

+0

感谢您的回复,这是我一直在寻找的,我对我缺乏适当的术语表示歉意! – neeko

0

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

+0

是的,我使用会话开始于我的代码 – neeko

+0

这虽然有用,但实际上并没有回答这个问题.... –

1

$_SESSION['username']=$_POST['username'];实际上并没有启动一个会话,session_start()一样。所以你的问题是错位的。

这行代码没有任何内在的错误。

如果你想知道如何编写安全的会话代码的一些信息,这是不是一个坏的地方开始:http://phpmaster.com/php-sessions/您可以搜索

两个安全关键词是“会话固定”和“会话劫持” 。另外两个常见安全问题是XSS攻击和CSRF攻击。

这个主题也有一堆以前的问题已经在stackoverflow上,你应该搜索。 For instance

+0

谢谢,再次表示歉意,因为没有正确地说明问题,这将帮助我走出很多!非常感激 – neeko