所以我的目标是通过会话ID管理用户,这样做
代码:
session_id($_POST["SESSID"]);
session_start();
2.在每个获取用户数据的请求中使用会话ID。
但我有两个问题:
允许客户端为服务器提供会话ID是不安全的?不会打开滥用的应用程序,人们会尝试猜测其他用户的会话ID?
服务器不会失去对哪个会话过期的控制权?只要客户端拥有旧会话ID,他们就可以永久使用它吗?
编辑:可能的解决方案: 因此,为了解决我的问题,我修改了代码,为每个会话ID设置了一个到期日期,如果旧会话ID已过期,则服务器为客户端设置一个新的,如下所示:
session_id($_POST['SESSID']);
session_start();
if( isset($_SESSION['expires']) && $_SESSION['expires'] > time()){
//use old session
}else{
session_unset();
session_destroy();
session_start();
session_regenerate_id(true);
$_SESSION['expires'] = date(strtotime("+1 hour"));
// use new session
}
答案 0 :(得分:1)
此漏洞甚至有一个名称。 :)它被称为session fixation。
修改强>
要避免会话固定和相关的会话漏洞,您应该
请注意,这不是一个全面的列表,并且没有特别的顺序。