1

我有如下代码,通过使用 UA 的 MD5 和种子来使会话更加安全。

if (!isset($_SESSION['key']))
{
    $_SESSION['key']=md5($_SERVER['HTTP_USER_AGENT'] . $UA_SEED);
    $session_is_valid = TRUE;
}
else if($_SESSION['key'] != md5($_SERVER['HTTP_USER_AGENT'] . $UA_SEED))
{
    $session_is_valid = FALSE;
    exit;
}

代码运行良好,但 IE9 有自己的议程。通过输入 URL 直接访问我的网站时,UA 发送为

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) 

如果我通过另一个网站的链接访问它,则 UA 将作为

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

有什么解决方法吗?其他浏览器没有这样的恶作剧。

PS我知道这种“安全”的附加形式是有限的,但有总比没有好。

4

2 回答 2

2

从您的字符串中,一个是MSIE 7.0,另一个是MSIE 9.0。这篇文说,在 IE9 及更高版本中,只会使用较短的 UA 字符串(除非使用使用 F12 开发工具的兼容模式或版本模拟)。

因此,您的问题很可能指向以下情况之一:

  • 您已打开兼容模式。
  • 您在 F12 开发人员工具中将 IE 版本设置为 7.0。
  • IE 的设置乱七八糟,有些网站在兼容模式下显示。在这种情况下,您应该将 IE 的设置重置为默认值。
于 2012-07-12T23:28:52.173 回答
0

很可能您以稍微不同的方式键入 URL,这导致 IE 在要在兼容性视图中呈现的网站列表中找到它。除非您需要兼容性视图,否则您应该从工具 > 兼容性视图设置的列表中删除您的网站,并考虑完全禁用它。

于 2012-07-12T23:42:45.973 回答