我有如下代码,通过使用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)
这有什么解决方法吗?其他浏览器没有这样的恶作剧。
P.S。我知道这种“安全”的增加形式是有限的,但事情总比没有好。
答案 0 :(得分:2)
从您的字符串中,一个是MSIE 7.0
,另一个是MSIE 9.0
。这个blog post表示在IE9及更高版本中,只会使用较短的UA字符串(除非使用F12开发工具进行兼容模式或版本模拟)。
因此,您的问题很可能指向以下其中一项:
答案 1 :(得分:0)
您很可能以稍微不同的方式键入URL,这导致IE在您的兼容性视图中呈现的网站列表中找到它。除非您需要兼容性视图,否则您应该从工具>列表中删除您的网站。兼容性查看设置并考虑完全禁用它。