我有如下代码,通过使用 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我知道这种“安全”的附加形式是有限的,但有总比没有好。