跨域饼干

我有一个小问题。

如何为多个域设置 Cookie?

我确实了解安全问题,并且我确信以前已经做过。其原因是 SSO。

即。

account.domain.com需要为以下各项设置域登录:

domain.com,domain1.com,domain2.com。

有没有简单的方法,使用PHP和cookie,或任何替代方案?


答案 1

domain.com 绝对没有办法为 domain1.com 设置cookie。您尝试执行的操作只能通过让用户的浏览器向每个域提交请求来解决,然后该域将设置自己的cookie。

然后,您需要为每个域提供一种方法来验证用户的身份。有两种方法可以解决这个问题:

  1. 后台通道 - 站点直接相互联系以确定用户是否已登录。
  2. 在 GET 或 POST 中传递令牌 - 当用户的浏览器重定向到其他站点时,将传递包含标识和会话状态的数字签名参数。

这真的相当复杂。我建议你不要自己掷骰子。看看SimpleSAMLPHP,了解我所描述的PHP实现。


答案 2

你试图做的事情是做不到的。(这是浏览器安全问题,而不是PHP问题。

除了使用某种形式的异地身份验证之外,您可以实现的最接近的方法是使cookie可以跨子域访问,在这种情况下,您只需使用PHP set_cookie函数的可选“域”参数。


推荐