首页 > 解决方案 > 用户会话与另一个用户混合

问题描述

自上个月以来,我们面临着非常奇怪的会话问题,即多个用户获得相同的会话 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 的数据覆盖。所以看起来,用户 2 从未在他的帐户中看到任何问题,但用户 1 能够看到用户 2 的帐户。此外,我们可以看到 User-2 在服务上始终处于活动状态。

谁能帮我们找出原因?

标签: phpsessionmemcached

解决方案


如果您使用登录的 user_id 生成 session_id,请将当前 time_stamp 连接到该 session_id。如果您使用一些随机文本或数字生成普通会话 ID,则可能会混淆会话。


推荐阅读