2012-07-12 33 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在您的網站列表中找到要在兼容性視圖中呈現的網址。除非您需要兼容性視圖,否則應從工具>兼容性視圖設置列表中刪除您的網站,並考慮完全禁用它。