【问题标题】:Do PHP sessions set any cookies?PHP 会话是否设置任何 cookie?
【发布时间】:2010-11-25 11:48:56
【问题描述】:

我只在我的社交网站上手动设置了一个 cookie,但我非常依赖 php 会话。我想知道会话是否在幕后设置了任何 cookie?

我只是在阅读 HttpOnly-cookies,我只是想弄清楚我是否可以使用它们。

【问题讨论】:

    标签: php cookies session


    【解决方案1】:

    PHP 会话可以使用 cookie,具体取决于您如何配置它们。看看这些设置:

    • session.use_cookies (boolean): 指定模块是否会使用cookies在客户端存储session id。默认为 1(启用)。
    • session.use_only_cookies (boolean): 指定模块是否只使用cookies来存储客户端的session id。启用此设置可防止涉及在 URL 中传递会话 ID 的攻击。此设置是在 PHP 4.3.0 中添加的。自 PHP 5.3.0 起默认为 1(启用)。

    如果您禁用会话 cookie,则会使用 GET 参数。

    【讨论】:

    • 我有点想这就是发生的事情,但现在我知道了,谢谢。我的系统确实使用 cookie 方法来存储会话 ID。这个 cookie 安全吗?
    • “安全”是什么意思? cookie 方法比在 URL 中传递会话 ID 更安全。但是,这并不意味着它们是 100% 安全的。例如,如果您的网站容易受到 XSS 攻击,攻击者可能会窃取会话 cookie。
    【解决方案2】:

    是的。 PHP 会话依赖于包含会话密钥的 cookie。您的会话数据仅存储在您的服务器上,但会为每个会话分配一个唯一 ID,并且该 ID 会保存在 cookie 中。

    您认为会话 cookie 和设置为 HttpOnly 的传统 cookie 之间有什么关系?

    另外:请记住,并非所有浏览器都支持HttpOnly

    【讨论】:

      【解决方案3】:

      确实如此,有一个名为 PHPSSID 的 cookie 用于存储会话 ID。

      对于 HttpOnly cookie,请参阅 http://ilia.ws/archives/121-httpOnly-cookie-flag-support-in-PHP-5.2.html

      【讨论】:

      • 从 IE 6.0 SP1 和 Firefox 2.0 起支持 HttpOnly
      【解决方案4】:

      PHP 会话使用 HTTP 获取和设置会话 ID,并使用文件系统存储会话 - 任何时候都不会使用 cookie,除非您使用 setcookie() 实际创建它们;

      杰米

      【讨论】:

      • 错了。不过,您可以将 PHP 配置为以这种方式运行。
      猜你喜欢
      • 2015-11-30
      • 2011-12-09
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 2014-06-15
      • 2023-03-19
      • 2011-06-11
      • 1970-01-01
      相关资源
      最近更新 更多