我正在尝试学习会话和安全性,第一步似乎是通过使用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()
如何帮助我加强会话以及如何正确使用
答案 0 :(得分:2)
答案 1 :(得分:1)
重新生成ID可防范session fixation,攻击者可通过调整Cookie中的会话ID将其他人的会话ID作为自己的会话ID。
作为示例情况:
PHPSESSID
Cookie。PHPSESSID
值设置为他并且可以访问。在登录和权限提升时重新生成会话意味着我抓住的ID现在没用了。