php - 多个 PHPSESSID 冲突

标签 php session

我注意到每天有多个用户被分配相同的 session_id。我现在使用的是 php 7.2,但回顾用户 session 的历史记录,自从我使用 php 5.4 以来一直在发生这种情况。

我只是使用 php 默认值 session_start() ,没有自定义 session 处理程序。

我读到 session_id是客户端 ip 和时间的组合,但考虑到我使用的是负载均衡器,这可能会限制 ip_addresses 的随机性?

在使用负载均衡器时增加 session_id 的唯一性以防止冲突的正确方法是什么?

最佳答案

如果您使用的是 Nginx,您可能需要检查 FastCGI 微缓存是否启用并禁用它。这在运行 nginx 的 PHP.net 开发人员错误列表中引起了一些错误

Bug #75496 Session ID Collision happened few times

After the first case [of collision] we changed a hash entropy php settings in php.ini so session_id is now 48 chars but it didn't help to prevent second case.

解决方法:

FastCGI micro caching at nginx that cached 200 responses together with session cookies. Of course maybe it was set wrong at our server, but its definitely has nothing to do with PHP.

请看: https://bugs.php.net/bug.php?id=75496

关于php - 多个 PHPSESSID 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52012852/

相关文章:

java - 我想在我的 android 代码中实现记住我的功能,但我不知道从哪里开始

session - 网络场上的 DotNetOpenAuth

ruby-on-rails - 阅读 Rails session secret 的最佳方式是什么?

php - 如何取消设置/销毁从 mysql 检索数据的 session

php - Laravel Scheduler 以 root 用户身份创建缓存文件

javascript - 如何生成动态下拉菜单 PHP Javascript mySQL

java - 检索 ArrayList 作为 session 属性

php - 禁用 JavaScript 时的 Ajax 搜索解决方法

php - 根据标题将csv数据导入数据库

node.js - Nodejs 中的 connect-redis