【问题标题】:Why does Magento use 2 cookies per session?为什么 Magento 每个会话使用 2 个 cookie?
【发布时间】:2011-04-24 20:34:42
【问题描述】:

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

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

我只是想不出为什么同一域需要第二个 cookie。

【问题讨论】:

  • 投反对票时请留言..
  • 是的,不加评论地否决这个问题似乎很奇怪。对我来说似乎是一个相当不错的问题。
  • 我认为这个问题没有问题。我能问一下您为什么出于安全原因担心它吗?
  • 很遗憾,我并不完全了解它,因为我只需要为其他部门填写一份与安全和隐私相关的问题目录。

标签: security zend-framework cookies magento privacy


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢!我也只是尝试删除第二个 cookie,似乎根本不需要它。所以我也许可以完全删除这个cookie而没有任何副作用。
【解决方案2】:

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

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

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

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

【讨论】:

  • 不错的解决方案,但要小心编辑核心文件。您应该(至少)在app/code/local 文件层次结构中创建一个副本,而不是直接编辑核心。这应该最大限度地减少升级/补丁的损坏。
  • 是的,你是对的,事实上我确实是这样做的。我不喜欢破解核心文件,但在这种情况下,我想一个人根本没有机会。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2012-01-11
    • 2017-04-17
    • 1970-01-01
    • 2011-05-28
    • 2022-01-24
    • 2011-10-27
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    相关资源
    最近更新 更多