15

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

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

我只是想不出为什么需要为同一个域提供第二个 cookie 的任何原因。

4

3 回答 3

6

我将把它称为残留代码。Varien 严重依赖 Zend 框架作为 Magento 的基础,因此许多类(例如 Zend_Session)被用作 Magento 实现的父类。

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

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

于 2010-10-13T13:54:01.847 回答
5

我可以通过颠倒session_start()调用顺序和将 cookie 设置为Mage_Core_Model_Session_Abstract_Varien::start(..). 这两行现在看起来像这样:

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

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

顺便说一句:另一个 cookie 并没有像我想象的那样在 Zend_Session 中创建,而是它们都来自Mage_Core_Model_Session_Abstract_Varien::start(..).

于 2010-10-14T08:36:26.263 回答
2

这太有趣了。我刚刚检查了企业版的安装,并且只设置了“PHPSESSIONID”,即使同时登录了“前端”和“管理员”也丢失了。也许这是仍在积极开发中的东西。

于 2010-10-13T14:05:17.377 回答