Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于PHP用户代理的会话身份验证_Php_Internet Explorer_Session_Authentication_User Agent - Fatal编程技术网

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

基于PHP用户代理的会话身份验证,php,internet-explorer,session,authentication,user-agent,Php,Internet Explorer,Session,Authentication,User Agent,我有一个基于用户代理的会话身份验证。每次请求后,我都会检查用户代理是否已更改。如果是这样,用户将注销(会话可能已被劫持) 一切都很顺利,直到。。。一些IE用户抱怨ajax请求后出现问题 在几个不眠之夜之后,我开始记录每个请求的用户代理,并对它们进行比较。而WTF,如果是ajax请求,某些IE版本会向用户代理附加“ICAPoHTTPS” 有人知道为什么吗 谢谢,我希望它能帮助其他人…有用的消息,我没有注意到 无论如何,我不会使用用户代理,因为它是基于软件/头的,如果有人能够劫持会话并将cookie

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

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

在几个不眠之夜之后,我开始记录每个请求的用户代理,并对它们进行比较。而WTF,如果是ajax请求,某些IE版本会向用户代理附加“ICAPoHTTPS”

有人知道为什么吗


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

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

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

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


编辑:

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


希望您知道这样一个事实,即用户代理是可编辑的标头,可以用于。

我曾考虑过使用ip地址,但在移动设备上通常存在动态ip(即每次请求时我的ip都会更改)。在“正常”的互联网连接上也有动态IP,如果您有一个长时间的会话,这可能会导致问题。您可能希望使用模式而不是。它有它的缺点,但它是一个相当有抵抗力的解决方案。取决于您正在使用的服务类型。我通过从用户代理中删除“ICAPoHTTPS”来修复它。我知道这不是一个干净的方法,但目前应该这样做。但在将来,我肯定会使用ajax登录并保存这两个用户代理。是的,我知道,但由于我只使用用户代理的散列,这不应该是一个安全问题。谢谢