【问题标题】:Can $_COOKIE ever contain cookies set by another domain?$_COOKIE 是否可以包含由另一个域设置的 cookie?
【发布时间】:2013-02-09 11:37:55
【问题描述】:

假设我有一个网站 www.mysite.com。

如果我通过域 www.mysite.com 上的 PHP 代码使用 $_COOKIE$_COOKIE 数组是否可以包含由 www.mysite.com 以外的域设置的 cookie?

我的理解(这是非常有限的!)是域只能访问它自己设置的 cookie,这意味着 $_COOKIE 只能包含由域设置的 cookie。这是正确的吗?

【问题讨论】:

  • 否则将是一个严重的安全问题
  • 是的,如果是这样,人们就可以互相窃取 cookie。我们应该有一场战争。就像黑客很容易窃取 facebook cookie 或 stackoverflow cookie。

标签: php cookies


【解决方案1】:

没有。只有没有功能的浏览器才会这样做。

只有客户端可以查看所有单独域的所有cookie,浏览器确保只发送与当前域相关的cookie而不发送其他域。

【讨论】:

  • 一开始No这个词让人很困惑。
  • 当我说不时,我是在回答他最初的问题:$_COOKIE 数组是否可以包含由 www.mysite.com 以外的域设置的 cookie?
  • 感谢您的所有回答。我接受了这个只是因为它是第一个几秒钟。
【解决方案2】:

没错,$_COOKIE 只能访问由他的域设置的 cookie。

【讨论】:

    【解决方案3】:

    通过使用 '.domain.com' 而不是 'domain.com' 可以让子域共享一些 cookie。

    跨不同的域,例如 domain1.com 和 domain2.com 是不可能的。

    【讨论】:

    • 看看.com怎么样?
    • @JoachimIsaksson 这是一个有趣的想法,我以前没有听说过,但如果浏览器允许,我认为这将被视为安全问题。
    【解决方案4】:

    从浏览器发送到您的服务器的http request 将包含您放置在浏览器中的cookies。访问不属于您的域的 cookie 将是一种恶意活动,会导致安全问题。

    • cookie 窃取/会话劫持是一种用于窃取其他用户的活动会话的攻击。
    • 用户登录网站后,计算机上会存储一个 cookie,因此每次访问该网站的不同页面时,都无需重新进行身份验证。
    • 如果有人获取了其他人的 cookie 并将其添加到浏览器中,则攻击者存储的用户名/密码组合或会话 ID 将与受害者的相同,因此将网站上的攻击者身份验证为其他人(受害者),无需知道他们的凭据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2015-03-01
      • 2012-07-25
      • 1970-01-01
      • 2015-07-14
      • 1970-01-01
      • 2011-10-09
      相关资源
      最近更新 更多