我有这个代码:
if (isset( $_SESSION['user_agent'] )) {
if ($_SESSION['user_agent'] != md5( $_SERVER['HTTP_USER_AGENT'] )) {
die('Session error.');
}
}
一切正常。但每次我登录(每24小时一次),我都会收到错误消息。用户代理是在改变什么?
谢谢你的帮助。
会话的有效期限为http://www.php.net/manual/en/session.configuration.php,通常为几分钟或几小时
任何能够劫持会话的人(即通过嗅探未加密的HTTP)都会在经过身份验证的用户出现后拥有该王国的密钥。
HTTP_USER_AGENT
?是的,这也是明确发送的,攻击者可以欺骗它。窃取/欺骗会话cookie的任何MitM应用程序通常也会冒充用户浏览器的用户代理。
这里唯一的解决方案是HTTPS,现在由于Let's Encrypt而免费。