跨域和共享多个域的PHP会话

时间:2016-04-11 17:08:02

标签: php session ssl cookies https

我正在尝试设置以下内容:

login.domain.com
site1.domain.com
site2.domain.com
https://domain2.com

如果用户访问site1.domain.com或site2.domain.com并且他们未登录,则会重定向到login.domain.com/?url=site1.domain.com

在php aplication domain.com上。我使用redis设置了php.ini会话。

session.save_handler=redis
session.save_path="tcp://127.0.0.1:6379?weight=1&database=14"

验证成功后。我设置了cookie session_id。

在site1.domain.com和site2.domain.com上。我得到Cookie

$sessionid = $_COOKIE['session_id'];
session_id($sessionid);
session_start();

用户登录成功。

但我有问题。如何domain2.com获取cookie,域https SSL访问它和安全性。

1 个答案:

答案 0 :(得分:0)

您可以做的是直接在URL中传递会话。因此,当您链接到domain2.com时,您会像这样传递会话(假设您没有更改默认的会话ID处理程序)

domain2.com?PHPSESSID=[your session ID here]

虽然存在一些潜在的安全风险(如果我是你,我会在关键点重新生成ID),它可以解决您的问题。

另一种解决方案是散列会话ID并将其存储在Redis实例中,然后根据该哈希设置会话。这样一点安全。