为什么Magento每次会话使用2个cookie?

时间:2010-10-13 13:21:25

标签: security zend-framework cookies magento privacy

出于数据安全和隐私的原因,我想知道为什么Magento会为一个前端会话使用两个cookie。

我所知道的是其中一个被设置在Mage_Core_Model_Cookie::set(..)而另一个设置在Zend_Session::expireSessionCookie()中,但我似乎无法弄清楚它们的用途。

我无法想到为什么人们需要为同一个域提供第二个cookie。

3 个答案:

答案 0 :(得分:6)

我打算称这个为残留代码。 Varien在很大程度上依赖于Zend Framework作为Magento的基础,因此许多类(例如Zend_Session)被用作Magento实现的父类。

标记为“frontend”的Varien-set cookie为您访问的网站的部分命名(例如,如果您通过后端登录,您将拥有单独的“admin”cookie),而Zend cookie似乎是全局的

另请注意,我能够删除Zend cookie而没有任何明显的有害影响(我的登录会话和购物车仍然可以访问,并且cookie没有立即替换)。

答案 1 :(得分:5)

我能够通过颠倒session_start()调用的顺序以及在Mage_Core_Model_Session_Abstract_Varien::start(..)中设置cookie的语句来解决这个问题。这两行现在看起来像这样:

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

它现在只创建一个cookie,它似乎没有任何副作用。

BTW:我假设其他cookie不是在Zend_Session中创建的,而是两者都来自Mage_Core_Model_Session_Abstract_Varien::start(..)

答案 2 :(得分:2)

这很有趣。我刚刚检查了企业版的安装,只设置了“PHPSESSIONID”,即使登录了两者,“前端”和“管理员”也都丢失了。也许这仍然是积极开发的东西。