Почему 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" отсутствуют даже при входе в оба. Возможно, это все еще активно развивается.