在同一服务器上的域之间共享会话

时间:2014-03-12 15:31:00

标签: php security session cookies cross-domain

我有一个包含两个域的服务器。我使用相同的SESSION ID(让我们假设您在两台服务器上手动更改“PHPSESSID”的cookie值,或者在session_start之前使用session_id(...))。 这两个域使用的会话文件是相同的,我在磁盘上验证了它。

当我更改域时,会话被清除。我的意思是清除BOTH域并且不向会话写任何内容。

请注意,这在几周前在同一台服务器上运行,没有任何改变(至少我们没有手动更改/升级任何东西)

我用来调试的脚本是这些,在每台服务器上都是相同的:

SET会话:

<?
session_id(PUT_HERE_THE_SAME_SESSION_ID);
session_start();
$_SESSION['KEY'] = 'VALUE';
?>

检查会话:

<?
session_start();
echo "SESSION ID: ".session_id()."<br>\n";
print_r($_SESSION);
?>

魔法行为:
在A上设置会话 检查A上的会话,一切正常 刷新,等待或A上还有什么,然后检查,确定
检查B上的会话 - &gt; EMPTY
再次检查A - &gt; EMPTY !!!!!

交换A和B时的行为相同。

赞赏任何好的建议 我不想用另一种方法来做这件事,我需要了解发生了什么。

1 个答案:

答案 0 :(得分:0)

这是可能的,但是在默认配置中,suhosin会使用文档根作为密钥加密会话数据。 因此,不能以这种方式共享不同域的会话。