PHP cookie-bases session swapping in phorum



>我的phorum服务器遇到了一个奇怪的错误 - 似乎是随机的,一些用户会相互交换,并发现自己完全以彼此的身份登录,可以完全访问彼此的帐户。我自己经历过一次这个错误,但无法重新创建它。

Phorum配置为通过cookie跟踪会话,会话哈希也存储在用户数据库中。我已确认数据库完好无损,并且没有发生会话 ID 冲突。

您可以在此处查看phorum身份验证和会话管理的来源,这相当简单。会话只能通过登录或现有 cookie 创建,所以我的工作理论(在与 phorum 开发人员交谈后(是服务器上存在某种缓存问题。有一个已知的缓存问题会影响ASP(有关示例,请参阅此处或此处(,但我的服务器是运行Apache 2.4,MySQL(技术上MariaDB 10.1 + InnoDB(和PHP 5.6的Linux服务器。有谁知道这是怎么回事?我已经为此插了一个多星期,除了确认phorum会话代码中缺少错误之外,几乎没有取得任何进展。

我必须继续的唯一线索是会话交换在我的托管服务关闭(并恢复(其文件服务器的同一天开始。然而,他们说他们看不出这如何负责。

编辑#1:我正在添加一些请求和响应标头。

以下是初始 GET 以获取论坛列表的响应。常规

请求网址:https://www.example.com/forum/list.php?11 请求

方法:获取 状态代码:200 远程地址:x.x.x.x:443

推荐人政策:降级时禁止推荐人

响应标头

内容编码:gzip 内容类型:文本/HTML;

charset=UTF-8 日期:2018 年 5 月 7 日星期一 20:23:08 GMT 服务器:Apache

设置饼干:phorum_session_v5=35%3A412b7c329cc8741de88532342df9; expires=星期二, 08-五月-2018 20:23:08 GMT;最大年龄=86400;路径=/

状态: 200 变化: 接受编码方式: e3s

请求标头

:权限:www.example.com

方法:获取

:p ath:/forum/list.php?11

:方案:https

accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8

接受编码: gzip, deflate, br 接受语言: en-US,en;q=0.9

缓存控制:最大年龄=0

饼干:phorum_session_v5=35%3A412b7c329cc8741de88532342df9;

推荐人:https://www.example.com/forum/addon.php?11,module=user_list

升级不安全请求:1个用户代理:Mozilla/5.0(Windows NT 10.0; 赢64;x64( AppleWebKit/537.36 (KHTML, like Gecko( 铬/66.0.3359.139 野生动物园/537.36

这是Ajax的后续电话:

常规

请求网址:https://www.example.com/forum/ajax.php?client

请求方法:GET 状态代码:200(来自内存缓存(

远程地址:x.x.x.x:443 反向链接策略:降级时无反向链接

响应标头

年龄:734

缓存控制:必须重新验证

内容编码:gzip

内容长度:2862

内容类型:文本/JavaScript;字符集=UTF-8

日期:2018 年 5 月 7 日星期一 18:29:37 GMT

到期: 星期二, 08五月 2018 02:2937 GMT

杂注:缓存

服务器:阿帕奇

状态:200

变化:接受编码

关于:E2S

@Sammitch是正确的 - phorum 没有在我的大多数页面的标题中设置缓存控制。这导致我的托管服务自己的缓存系统缓存包含会话 cookie 的响应。

我通过更改我的 .htaccess 文件来解决此问题,如下所述:https://stackoverflow.com/a/7664157/1411376

这似乎适用于我的服务器配置,因为 php 代码 (phorum( 没有设置缓存控制的代码(ajax 请求除外(。

最新更新