Обмен сеансами пользователей Cakephp / php для подмножества наших клиентов - PullRequest
3 голосов
/ 22 июля 2011

Существует ошибка, которую мы не можем воспроизвести, которая включает в себя обмен пользователями пользователей в одном конкретном регионе наших корпоративных клиентов. Например, пользователь входит как пользователь на странице входа в систему, а когда он прибывает домой, он является другим пользователем.

Похоже на случайный угон сеанса, вот подсказки:

  • Безопасность CakePHP установлена ​​на низкое значение (это означает, что cookie не перезаписывать каждую страницу загрузки, а куки не делает пользовательский агент проверить)
  • наш файл cookie настроен так, чтобы не заботиться о поддоменах (.example.com вместо example.com)
  • корпоративных пользователей перенаправляются с использованием 302, если они входят в неправильную область (мы должны использовать 303?)
  • было случайно отправлено 301, но пользователи могут копировать
  • все затронутые пользователи находятся за одним маршрутизатором, разделяющим интернет через Sprint MPLS
  • все затронутые пользователи могут использовать компьютеры, выпущенные клиентом
  • их ИТ-специалисты утверждают, что прокси-кеша и удаленного VPN-доступа нет, но они утверждают, что могут повторить проблему с домашних компьютеров и вне сети.

Поскольку мы не можем воспроизвести проблему каким-либо образом, мы можем только предполагать, что проблема связана с их сетью.

Как мы можем доказать, что их сеть / компьютеры вызывают обмен сеансами? Или какая конфигурация с нашей стороны может вызывать это, когда другие пользователи не сталкиваются с этой проблемой?

[редактирование / обновления]

Отвечая на некоторые указания, предоставленные комментарием - наш трафик недостаточно велик для отправки дублирующих идентификаторов. (статистически вероятность слишком мала, чтобы увидеть то, что мы видели, как заказчик копирует).

см. Также:

Обновление:

Мы используем FCGI, и для понимания x_forwarded_for

требуется mod_php.

Ответы [ 2 ]

1 голос
/ 22 мая 2012

Это может быть связано с неправильной отменой сеанса при выходе из системы. пожалуйста, убедитесь, что все переменные в сеансе правильно завершены или явно нулевые завершают каждый объект в сеансе, а затем сделайте недействительным сеанс.

Второй причиной может быть использование проверки переменных для статических переменных в вашем коде. Неправильное использование статических переменных также может вызвать эту прерывистую проблему.

Используйте регистратор для регистрации идентификатора сеанса, сопоставленного с идентификаторами пользователей, которые могут сузить вашу проблему и помочь вам понять, что именно происходит.

Отмена существующего сеанса в действии входа в систему, создание нового сеанса и копирование содержимого в новый сеанс очень помогут.

0 голосов
/ 22 июля 2011

Во-первых, не думайте, что клиент виноват. Это может быть проблема на их стороне или на вашей. Не делайте предположений относительно того, что перед тестированием.

Независимо от того, кто виноват, это бремя, чтобы вы исправили или помогли исправить это.

Во-первых, то, что один пользователь стал другим, часто является результатом проблемы с идентификатором сеанса. Уровень безопасности, который вы установили в Cake, не генерирует идентификатор сеанса для каждого запроса.

Я бы начал с регистрации $session->id() как пользователя как внутри, так и вне вашей локальной сети. Затем сравните, чтобы увидеть, является ли идентификатор сеанса тем же или когда-либо пустой строкой. Одним из решений этой проблемы является создание уникального идентификатора для каждого пользователя.

Если идентификатор сеанса уникален для каждого экземпляра, вы можете проверить его под нагрузкой.

Смысл в том, чтобы сначала проверить и сделать выводы, основываясь на результатах, а не на предположениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...