0

我有这个代码:

if (isset( $_SESSION['user_agent'] )) {
    if ($_SESSION['user_agent'] != md5( $_SERVER['HTTP_USER_AGENT'] )) {
        die('Session error.');
    }   
}

一切正常。但是每次我登录(每 24 小时一次)时,我都会收到错误消息。用户代理是改变还是什么?

谢谢你的帮助。

4

2 回答 2

0

会话的生命周期有限http://www.php.net/manual/en/session.configuration.php通常是几分钟或几个小时

于 2013-02-02T14:58:36.487 回答
0

一旦经过身份验证的用户出现,任何能够劫持会话(即通过嗅探未加密的 HTTP)的人都拥有通往王国的钥匙。

HTTP_USER_AGENT? 是的,这也是明文发送的,攻击者可以欺骗它。任何窃取/欺骗会话 cookie 的 MitM 应用程序通常也会冒充用户浏览器的用户代理。

这里唯一的解决方案是 HTTPS,多亏了Let's Encrypt ,它现在是免费的。

于 2017-12-29T05:08:37.023 回答