php зашифрованные данные сеанса ssl - PullRequest
3 голосов
/ 19 октября 2010

У меня работает 2 сервера, один для динамического контента (nginx, php) и другой для входа в систему (apache2, php)

я использую memcache для обмена информацией о сеансе

я обновилпрограммное обеспечение сервера и с тех пор данные сеанса в apache зашифрованы

apache:
session :: write ("session / s53mqdhghmlrvnvjt05novt4m2", "encrypted-data", 0,1440)

nginx:
session :: write ("session / s53mqdhghmlrvnvjt05novt4m2", "test | i: 1;", 0,1440)

на обоих серверах идентификаторы сессии одинаковы, а сеансcookie по-прежнему передает sessionId, поэтому все по-прежнему работает так, как если бы

оба сервера использовали один и тот же php.ini

Я посмотрел в ssl conf, но не смог найти ничего, что могло бы установить сеансданные для шифрования

кто-нибудь знает, где я могу остановить шифрование данных сеанса на apache / mod_ssl

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

На данный момент решение состоит не в том, чтобы сохранять данные, предоставляемые php в session :: write, а в том, чтобы использовать session_encode () для генерации хеша сессии и сохранения этого

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

Ответы [ 2 ]

3 голосов
/ 04 декабря 2010

Если у вас загружен модуль suhosin, как я, возможно, это источник проблемы.Вы можете полностью отключить его или отключить шифрование сеанса, отключив suhosin.session.encrypt в INI-файле suhosin.

0 голосов
/ 19 октября 2010

Данные сеанса хранятся на сервере, а не внутри файла cookie сеанса. Если вы прочитаете куки, вы увидите, что это просто строка символов, которая содержит идентификатор. По умолчанию (и проще говоря) PHP сохраняет данные сеанса, сериализуя массив $ _SESSION и записывая его в файл. Я не совсем уверен, что вы пытаетесь делиться информацией о сеансах между различными средами. Поскольку вы упомянули memcached, просто переписайте функции обработки сеанса для чтения и записи в / из memcached. Поскольку вы будете контролировать, как хранятся данные, вы можете хранить данные в зашифрованном виде или нет. Вот ссылка на сессионные функции:

http://us3.php.net/manual/en/book.session.php

...