encrypt, ie, lost session, php, suhosin

Потеря сессии в IE

Пришлось столкнуться с идиотическим багом, портящим кровь. Информации по нему не так много, поэтому публикую на всякий случай.

Предыстория:
Руководитель проекта сообщил, что пользователь жалуется. Он логинится, передвигается по сайту и вдруг оказывается снова на странице авторизации. Проверили production-сервер и development . Никаких проблем не обнаружили. Но при добавлении очередной фичи , понадобилось проверить production-сервер в IE. И вот оно… Все как говорил пользователь, проходишь авторизацию, начинаешь бродить или даже просто делать refresh страницы — оказываешься на странице аутентификации, куда попадает только незалогиненный пользователь. Делаем вывод, куда-то потерялась сессия. Причем, проблема повторялась на всех доступных версиях IE.

Проверяю на development-сервере и на рабочей машине. Проблем нет. Значит дело 100% не в коде, нужно смотреть настройки сервера. Начинаю искать проблему. В основном попадается околотхенический бред. В конце концов натыкаюсь на то, что нужно.

http://swfupload.org/forum/generaldiscussion/1206

http://simply.com.au/blog/2009/11/flash-uploader-drops-the-session-in-internet-explorer/

Рецепт прост, меняем конфигурацию патча для php suhosin:

suhosin.session.cryptua = off
suhosin.session.encrypt = off

Если вы не имеете доступ к php.ini, вы можете внести эти изменения через .htaccess или в самом коде через ini_set

По умолчанию эти опции включены. То бишь, проблемы возникли именно из-за suhosin и его шифрования сессии на уровне движка php. К сожалению не нашел более полного описания этой проблемы и возникает она не со всеми версиями. На машине, где возникла проблема стоял suhosin patch 0.9.32.1 На моей рабочей машине 0.9.10, на ней никаких проблем не возникает.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *