我很难理解这一点,我认为我对网络攻击的无知是罪魁祸首。我对会话固定的理解是这样的:
建议您使用regenerate_session_id来降低黑客拦截会话的几率。现在不会触发regenerate_session_id,用会话ID更新黑客,同时注销最初登录的用户?这似乎会造成更多伤害然后好,所以我知道我必须在这里缺少一些东西。我错过了什么?
答案 0 :(得分:0)
session_regenerate_id是防止会话劫持的好方法,因为劫持通常发生在会话ID被盗后的后续步骤中。
例如:
如果出于任何原因,固定变得像现场一样快速,例如自动化过程,那么不,你是对的,这不会拯救用户。这就是为什么你不应该只依赖session_regenerate_id而是依赖用户的IP地址。
if(!session_id()){
session_start();
if(!isset($_SESSION['user_ip'])){
$_SESSION['user_ip'] = $_SERVER['REMOTE_ADDR'];
}
if($_SESSION['user_ip'] !== $_SERVER['REMOTE_ADDR']){
exit('highjacking detected, session terminated');
}
session_regenerate_id();
}
显然,如果黑客来自同一个网络,例如工作场所,则ip检测不起作用,因此您也可以使用UserAgent检查。但是根据数据的敏感性,这有点过分。
希望它有所帮助...