Symfony 1.4 ошибочно приписывает sf_user для свежих сессий

У меня странная (и очень спорадическая) проблема с Symfony 1.4. В частности, мое приложение Symfony (в очень редких случаях) показывает свежие сеансы, которые были зарегистрированы в моем приложении, даже если это не так.

Я использую следующий код в своем заголовке, чтобы проверить, является ли сеанс зарегистрированным пользователем. Если это так, мы показываем им приветственное сообщение и приглашаем их войти:

<?php if ($sf_user->isAuthenticated()) { ?>
<div class="btn">
Welcome back, <?php echo $sf_user->getProfile()->getFirstName(); ?>
</div>
<?php }

Однако иногда новые сеансы отображают приветственное сообщение от случайного пользователя из нашей системы. Совсем недавно кто-то загрузил новые сеансы и получил сообщение «Добро пожаловать» для кого-то еще в нашей системе.

Важное примечание: это первый раз, когда это произошло. Я не могу воспроизвести проблему после попытки 40+ браузеров и местоположений.

Мы используем Symfony 1.4 с аутентификацией sfGuard, которая поставляется вместе с Symfony.

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

Любая помощь будет принята с благодарностью.

0

Решение

У нас была очень похожая проблема. настройка session.hash_function чтобы более сильная хеш-функция помогла нам:

session.hash_function = "sha256"

подробности

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

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

Не нужно говорить, что это было чертовски сложно отлаживать. Мы просто пробовали разные вещи, чтобы исправить или воспроизвести проблему без удачи. настройка session.hash_function в sha256 заставил проблему исчезнуть (о новых случаях не сообщалось больше года).

Примечание по предварительной версии PHP 7.1.0

Они рекомендуют устанавливать session.hash_function в sha256 на официальной странице документа PHP:
http://php.net/manual/en/session.security.ini.php

Примечание по PHP 7.1.0

session.hash_function настройка была удалена начиная с PHP 7.1.0.
Теперь он использует сильную функцию по умолчанию.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]