Я сталкиваюсь со странной ошибкой на своем сервере серверов - по-видимому, случайно, некоторые пользователи меняются друг с другом и оказываются полностью вошедшими друг в друга с полным доступом к учетным записям друг друга. Я сам однажды сталкивался с этой ошибкой, но не могу ее воссоздать.
Phorum настроен на отслеживание сеансов с помощью cookie, при этом хеши сеансов также хранятся в базе данных пользователей. Я подтвердил, что база данных не повреждена и не происходит коллизий ID сессии.
Вы можете увидеть источник аутентификации и управления сессиями phorum здесь , это довольно просто. Сеансы создаются только через вход в систему или из существующих файлов cookie, поэтому моя рабочая теория (после разговора с разработчиком phorum) заключается в том, что на сервере существует какая-то проблема с кэшированием. Существует известная проблема с кэшированием, которая затрагивает ASP (см. здесь или здесь для примеров), но мой сервер - это сервер Linux, работающий под Apache 2.4, MySQL (технически MariaDB 10.1 + InnoDB) и PHP 5.6 , Кто-нибудь знает, как это может происходить? Я занимался этим более недели и добился небольшого прогресса, кроме подтверждения отсутствия ошибок в коде сеанса phorum.
Единственная подсказка, на которую я должен обратить внимание, это то, что смена сеанса началась в тот же день, когда моя хостинговая служба отключила (и восстановила) их файловые серверы. Однако они сказали, что не понимают, как это может быть ответственно.
РЕДАКТИРОВАТЬ # 1: я добавляю некоторые заголовки запроса и ответа.
Вот ответ для начального GET, чтобы получить список форумов.
Общая информация
URL запроса: https://www.example.com/forum/list.php?11 Запрос
Метод: GET Код состояния: 200 Удаленный адрес: x.x.x.x: 443
Политика реферера: no -rerrer-when-downgrade
Заголовки ответа
кодировка содержимого: тип содержимого gzip: text / html;
кодировка = UTF-8 дата: Пн, 07 мая 2018 20:23:08 GMT сервер: Apache
set-cookie: phorum_session_v5 = 35% 3A412b7c329cc8741de88532342df9; истекает = вт, 08 мая-2018 20:23:08 мск; Max-Age = 86400; Путь = /
статус: 200 варьируется: Accept-Encoding через: e3s
Заголовки запроса
: авторитет: www.example.com
: метод: GET
: путь: /forum/list.php?11
: схема: https
принять: текст / html, приложение / xhtml + xml, приложение / xml; q = 0,9, изображение / webp, изображение / apng, / ; q = 0,8
принять кодировку: gzip, deflate, br принять язык: en-US, en; q = 0,9
контроль кэша: max-age = 0
cookie: phorum_session_v5 = 35% 3A412b7c329cc8741de88532342df9;
реферер: https://www.example.com/forum/addon.php?11,module=user_list
запросы на обновление-небезопасность: 1 пользовательский агент: Mozilla / 5.0 (Windows NT 10.0;
Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko)
Chrome / 66.0.3359.139 Safari / 537.36
А вот еще один вызов Ajax:
Общее
URL запроса: https://www.example.com/forum/ajax.php?client
Метод запроса: ПОЛУЧИТЬ код состояния: 200 (из кеша памяти)
Удаленный адрес: x.x.x.x: 443 Политика реферера: no-referer-when-downgrade
Заголовки ответа
возраст: 734
контроль кеша: обязательный повторный сертификат
кодировка содержимого: gzip
длина содержимого: 2862
тип содержимого: текст / javascript; кодировка = UTF-8
дата: Пн, 07 мая 2018 18:29:37 GMT
истекает: Вт, 08 мая 2018 02:29:37 GMT
Прагма: Кэш
сервер: Apache
статус: 200
варьируется: Accept-Encoding
через: e2s