Почему Magento использует 2 куки на сеанс?

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

Все, что я знаю, это то, что один из них установлен в Mage_Core_Model_Cookie::set(..), а другой в Zend_Session::expireSessionCookie(), но все же я не могу понять, для чего они используются.

Я просто не могу думать о какой-либо причине, по которой вам понадобится второй файл cookie для того же домена.

Ответы

Ответ 1

Я смог исправить это, изменив порядок вызова session_start() и оператор, который устанавливает cookie в Mage_Core_Model_Session_Abstract_Varien::start(..). Эти две строки теперь выглядят так:

$cookie->set(session_name(), $this->getSessionId());
session_start();

Теперь он создает только один файл cookie и, похоже, не имеет побочных эффектов.

BTW: другой файл cookie не был создан в Zend_Session, как я предполагал, но вместо этого оба они пришли из Mage_Core_Model_Session_Abstract_Varien::start(..).

Ответ 2

Я собираюсь назвать этот один рудиментарный код. Varien сильно опирается на Zend Framework как основу для Magento, поэтому многие из классов (например, Zend_Session) используются в качестве родительских классов для реализаций Magento.

Файл cookie с параметром Varien, обозначенный как "frontend", заменяется на разделы сайта, который вы посещаете (например, у вас будет отдельный "cookie" администратора, если вы войдете в систему через бэкэнд), тогда как файл cookie Zend будет глобальным.

Также обратите внимание, что я смог удалить файл cookie Zend без каких-либо очевидных вредных эффектов (мой сеанс входа в систему и корзина остались доступными, и файл cookie не был немедленно заменен).

Ответ 3

Это интересно. Я только что проверил установку корпоративной версии и установил только "PHPSESSIONID", "frontend" и "admin" отсутствуют даже при входе в оба. Возможно, это все еще активно развивается.