PHP会话Cookie在用户更改IP时失败

4
我有一个小应用的登录脚本,它通过存储会话 cookie 并在每个页面上检查它们来确保用户已登录。其中两个使用该系统的用户之一经常随机退出。这似乎是由于显示已认证的会话 cookie 不再存在所致。
经过大量调查,我唯一看到与此用户不同的事情是他们的 IP 地址正在更改(今天它每小时更改一次(他们在 Sky 上))。唯一的问题是 IP 地址的更改今天早上发生了 5 次,但只有一次用户被注销。
是否有人遇到类似的问题?
会话 cookie 是否与 IP 地址有关联?
非常感谢任何帮助或链接。
谢谢

我在工作中遇到了许多网站的完全相同的问题。我们有两个互联网连接,根据负载它们会自动切换(这样做会导致我们的IP更改),从而引起cookie /会话问题。 - AlexV
似乎Symcbean在下面说更改服务端的IP是一个问题。希望你能解决它。 - Columbo
2个回答

3
会话cookie与IP地址有关联吗?
不会。只要浏览器连接到相同的IP名称服务器,客户端地址更改或经过不同代理都没有关系。
更可能的是某些内容被缓存到了不应该缓存的地方(假设您没有对IP地址进行验证)。
您是否已将Web服务器配置为在访问日志中记录会话ID以及请求/客户端/用户代理?(即在访问日志中)
C.

谢谢。我的代码中没有IP检查。但是我会记录用户活动的IP地址 - 但不会基于此做出决策。我可能会将一些会话内容写入到文件中。会话cookie会被缓存吗?我认为不会,但我经常犯错。然而,我正在会话变量中存储系统时间以进行超时处理,并在阅读您的帖子后想知道是否从缓存位置获取了这些信息。这感觉像一个轻量级的解决方案,我想我可以将一些东西存储在数据库中,以使会话更加强大。 - Columbo
对我来说,越来越多的证据表明IP地址不是问题所在...我只有两个用户的数据。其中一个IP地址是固定的(至少一天内没有更改),另一个IP地址大约每1.5小时左右会随机更改。有问题的是那个IP地址会更改的用户。但是,她上周五12:36给我发了邮件说她刚刚被登出,而我可以清楚地看到她的IP地址从12:10到12:54pm保持不变,因此似乎IP地址并不是问题所在。但是她可能延迟了发送邮件。我将添加一些数据收集部分以尝试获取更多线索。 - Columbo
在添加了一些跟踪代码后,似乎用户的 cookie 会话就消失了。下一步是进入她的计算机并查看可能干扰会话的 Norton。 - Columbo
有时候用户重新登录时会重复使用他们的会话cookie ID,但其中的会话变量没有设置。其他时候,当他们重新登录时,会有一个新的会话ID。我在这个问题上卡住了。如果这是某种防火墙/cookie安全性问题,那么它肯定会删除cookie。 - Columbo
2
问题似乎是该用户使用了浏览器的刷新按钮。我创建了一个自定义的刷新按钮,以控制方式进行刷新,之后就没有再出现登录失败的情况了。总的来说,我认为当使用浏览器刷新时,FF和IE(我让用户尝试了IE)可能会导致某些问题,最终导致会话丢失。 - Columbo

2

默认情况下,PHP会话并不考虑IP地址的变化,只基于cookie值。

因此,在您的Web应用程序中可能有一些定制的代码使得当用户更改IP地址时会使会话失效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接