session_regenerate_id()正确用法的说明

时间:2013-12-08 22:00:20

标签: security session sessionid php

我正在尝试学习会话和安全性,第一步似乎是通过使用session_regenerate_id()加强了会话,遗憾的是,没有给出一个好的文档,说明我们应该如何以及为什么要在第一名。因此,我在SO中检查了一些像Using Session_regenerate_id()这样的答案,这些答案实际上无法提供任何正确的用法以及它如何保护页面免受会话固定/劫持。

我总是使用这样的东西(对于简单的登录脚本,我知道mysql注入,这是示例)

if($_POST){
   $username = mysql_real_escape_string($_POST['username']);
   $password = mysql_real_escape_string($_POST['password']);
   $query = mysql_query("SELECT * 
                        FROM users
                        WHERE username = '$username'
                        AND password = '$password' ");
 $row = mysql_fetch_array($query); 

if($row){
   $_SESSION['LoggedIn'] = md5($username); 
}

现在,我检查使用此方法验证并授予对登录用户的访问权限

if(isset($_SESSION['LoggedIn']) && !empty($_SESSION['LoggedIn'])){
 //giv access to secured page
}else{
 //redirect to login page
}

所以,我的问题是session_regenerate_id()如何帮助我加强会话以及如何正确使用