用户会话与另一个用户混在一起

时间:2018-06-21 13:22:52

标签: php session memcached

自上个月以来,我们面临非常奇怪的会话问题,其中多个用户获得相同的会话ID。以前,所有人都应该工作正常,因为我们从未收到过用户的抱怨或注意到这种事情。

我们收到了一些用户的投诉。根据他们的说法,他们的帐户突然切换到了我们网站上的另一个用户帐户,并且可以访问另一个用户帐户。

我们在服务器或代码库中没有任何可能导致此问题的最新更新,我们也尝试使用测试帐户在生产中产生此问题,但我们无法复制该问题。

与此问题相关的几点:-

  1. 我们正在使用Memecache存储会话,PHP版本为5.3.3

  2. 我们网站上的流量非常正常(每分钟流量不超过几百个请求),因此我们不怀疑session_id()是否重复。

  3. 我们当前的缓存控制标头"no-store, no-cache, must-revalidate, post-check=0, pre-check=0"已经通知客户端不要缓存任何内容。因此,根据我们的理解,它不应与缓存有关。

4。根据我们的调试,我们可以看到,用户1的会话值被用户2的数据覆盖。如此看来,User-2从未在其帐户中看到任何问题,但User-1能够看到User-2的帐户。此外,我们可以看到User-2在该服务上始终处于活动状态。

有人可以帮助我们找到原因吗?

2 个答案:

答案 0 :(得分:0)

请更详细地介绍会话变量,这意味着您如何分配值以及在什么时间分配值。我们认为,在过程中间,您的会话变量将被错误地重置为另一条记录。但是现在什么也不能说正确,请让我们先看看您的会话变量。

答案 1 :(得分:0)

如果要使用登录的用户名生成session_id,请将当前的timeststamp连接到该session_id。如果您要生成带有某些随机文本或数字的普通会话ID,则可能会混淆会话。