PHP безопасный сеанс по уникальному идентификатору - PullRequest
1 голос
/ 30 марта 2011

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

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

Если ответ «да», будет ли решение иметь уникальное временное имя в качестве части имени сеанса, немного похожее на имя TMP при загрузке файла.

А если так, как это сделать.

Большое спасибо,

Ответы [ 4 ]

3 голосов
/ 30 марта 2011

Я считаю, что UID (который php назначает в качестве идентификатора сеанса) случайно генерируется вне времени сервера, поэтому ответ - нет.Ни одному человеку не будет присвоен одинаковый UID.

0 голосов
/ 30 марта 2011

Просто чтобы немного расширить ответ Марка.

Возможность, о которой он говорит, очень похожа на возможность быть убитым метеоритом из космоса.

Итак, на практике ответ: НЕТ . Вы можете положиться на большие числа, как и все остальные

0 голосов
/ 30 марта 2011

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

PHP (я полагаю) проверяет, существует ли еще один сеанс, использующий только что созданный идентификатор. Если происходит столкновение, оно просто генерирует еще одно и продолжает пытаться, пока не появится что-то «уникальное». Однако это не мешает случаю, когда:

  1. пользователь A получает идентификатор сеанса 'X'
  2. пользователь A на некоторое время уходит, а сеанс 'X' истекает
  3. появляется пользователь B, и сервер снова генерирует идентификатор сеанса 'X' случайным образом
  4. пользователь A возвращается со своим исходным идентификатором cookie сеанса X и получает сеанс пользователя B.

Опять же, учитывая размер пространства идентификатора сеанса, очень маловероятно, чтобы это произошло. Но опять же, это не невозможно.

Кроме того, существуют случаи, когда сломанные / неправильно настроенные прокси-серверы путают файлы cookie и в основном «пересекаются», так что идентификаторы сеанса смешиваются между разными пользователями. Я помню случай, когда шлюз мобильного оператора делал именно это, и люди на определенной модели смартфона получали сеансы других людей вместо того, на котором они были.

0 голосов
/ 30 марта 2011

Я не понимаю, как сессии могли запутаться. Сервер генерирует уникальный идентификатор сеанса для сеанса этого пользователя. При каждом запросе страницы браузер пользователя отправляет идентификатор сеанса на сервер, и сервер подтверждает, что это действительный сеанс.

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

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