当用户登录当前会话时,设置了变量
$_SESSION['user']['timeout'] = time();
$_SESSION['user']['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['user']['agent'] = $_SERVER['HTTP_USER_AGENT'];
在我的 common.php 页面(所有 php 页面都需要)中,我使用了以下脚本,每次用户处于活动状态时都会重置一个 15 分钟的计时器,此外还会检查 IP 地址并检查 user_agent,如果它们不匹配的话当他们第一次登录/第一次设置会话时,会话被取消,并且不活动长达 15 分钟,会话也被取消。
...我所做的是防止会话劫持的好方法,而且它是否安全,或者是否足够?如果没有,还能做什么?
if(!empty($_SESSION['user'])){
if ($_SESSION['user']['timeout'] + 15 * 60 < time()) {
unset($_SESSION['user']);
} else {
$_SESSION['user']['timeout'] = time();
if($_SESSION['user']['ip'] != $_SERVER['REMOTE_ADDR']){
unset($_SESSION['user']);
}
if($_SESSION['user']['agent'] != $_SERVER['HTTP_USER_AGENT']){
unset($_SESSION['user']);
}
}
}