2012-07-12 68 views
1

我的代码如下,通过使用UA的MD5和种子使会话更安全。IE9用户代理字符串与链接时不同,而直接输入URL

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有自己的议程。当直接访问我的网站,通过在输入网址时,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) 

有任何解决方法对此?其他浏览器不做这样的恶作剧。

P.S.我明白,这种“安全”的附加形式是有限的,但有些事情总比没有好。

回答

2

从您的字符串中,一个是MSIE 7.0,另一个是MSIE 9.0。这blog post说,在IE9和以后,只会使用较短的UA字符串(除非使用使用F12开发工具的可编译模式或版本仿真)。

所以您的问题最有可能指向下列之一:

  • 您已经兼容模式打开。
  • 您在F12开发人员工具中将IE版本设置为7.0。
  • IE的设置搞砸了,有些网站在兼容模式下显示。在这种情况下,您应该将IE的设置重置为默认设置。
+0

你是对的,网站设置为兼容模式。我无法控制此设置。网络上的每台计算机均由IT安装,以便为所有Intranet网站强制执行此设置。 – Grizz 2012-07-13 00:16:57

0

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