基于PHP用户代理的会话身份验证


PHP User Agent based session authentication

我有一个基于用户代理的会话身份验证。每次请求后,我都会检查用户代理是否已更改。如果是,则用户已注销(会话可能已被劫持)。

一切都很顺利,直到。。。一些IE用户抱怨ajax请求后出现问题。

经过几个不眠之夜,我开始记录每个请求的用户代理,并对它们进行比较。在WTF中,如果是ajax请求,一些IE版本会将"ICAPoHTTPS"附加到用户代理。

有人知道为什么吗?

谢谢,我希望它能帮助其他人。。。

有用的消息,我还没有注意到。

无论如何,我不会使用用户代理,因为它是基于软件/标头的,如果有人能够劫持会话并将cookie正确地插入浏览器,他可能也能够劫持用户代理字符串并将其插入。

我通常使用REMOTE_ADDR,这也不能阻止与受害者在同一子网络中工作的人。


编辑:

您可以通过ajax发送登录表单来绕过这一点,然后在成功时重定向。假设会话在表单显示中是新的,它将收集标准的用户代理字符串,并在登录操作中收集第二个字符串。这样,在您的情况下,最多可以收集两个要检查的用户代理字符串。

希望您知道这样一个事实,用户代理是可编辑的头,可能被用来注入恶意代码/查询。