php - 用户会话与另一个用户混合
问题描述
自上个月以来,我们面临着非常奇怪的会话问题,即多个用户获得相同的会话 ID。以前,一切都应该正常工作,因为我们从未收到用户的投诉或注意到此类事情。
我们收到了一些用户的投诉。根据他们的说法,他们的帐户突然切换到我们网站上的另一个用户帐户,并且他们获得了对另一个用户帐户的访问权限。
我们在服务器或代码库中没有任何可能导致此问题的最新更新,我们还尝试使用测试帐户在生产中产生此问题,但我们无法重现它。
与此问题相关的几点:-
我们使用 Memecache 来存储会话,PHP 版本是
5.3.3
.我们网站上的流量非常小(每分钟不超过几百个请求),因此我们不怀疑 session_id() 会重复。
我们当前的缓存控制标头
"no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
已经通知客户端不要缓存任何内容。所以根据我们的理解,它应该和缓存无关。
4. 根据我们的调试,我们可以看到,用户 1 的会话值不知何故被用户 2 的数据覆盖。所以看起来,用户 2 从未在他的帐户中看到任何问题,但用户 1 能够看到用户 2 的帐户。此外,我们可以看到 User-2 在服务上始终处于活动状态。
谁能帮我们找出原因?
解决方案
如果您使用登录的 user_id 生成 session_id,请将当前 time_stamp 连接到该 session_id。如果您使用一些随机文本或数字生成普通会话 ID,则可能会混淆会话。
推荐阅读
- javascript - Javascript,如果值包括数字范围
- r - R +在data.table中按组在多列上应用功能,同时创建新列
- solr - 如何更改 Solr JVM 参数?
- react-native - 如何在本机反应中将附近的纬度 lng 过滤到特定的纬度 lng
- python - Maltego 变换:ParseError at [row,col]:[1,1] 消息:prolog 中不允许内容
- python - 如何从不同的标签中提取一组关键字?
- javascript - Parcel JS v2 Uncaught SyntaxError:无效或意外令牌
- asp-classic - 如何防止经典 ASP 中的跨站点脚本?
- python - 分区数据框列的快速方法
- html - 为图片标签指定明确的宽度和高度