我有基于用户代理的会话身份验证。每次请求后,我都会检查用户代理是否已更改。如果是这样,则用户已注销(会话可能已被劫持)。
这一切都很完美,直到......一些IE用户在ajax请求后抱怨问题。
经过一些不眠之夜后,我开始为每个请求记录用户代理并进行比较。而WTF,如果它是ajax请求,一些IE版本会将“ICAPoHTTPS”附加到用户代理。
有人知道为什么吗?
谢谢,我希望它能帮助别人......
答案 0 :(得分:0)
有用的新闻,已经注意到了。
无论如何,我不会使用用户代理作为它的软件/标题,如果有人能够劫持会话并正确地向浏览器提供cookie,他可能会劫持用户代理字符串并将其注入。
我通常使用REMOTE_ADDR,也不会阻止与受害者在同一子网中工作的人。
修改强>
您可以通过ajax发送登录表单,然后重定向成功,来解决这个问题。假设在表单显示上会话是新鲜的,它将收集标准用户代理字符串,并在登录操作中收集辅助字符串。这样,在您的情况下,您最多将收集两个要检查的用户代理字符串。
希望您了解事实,用户代理是可编辑的标题,可能会用于inject malicious code/queries。