在两个网站之间共享会话


Share Session Between Two Websites

提前感谢…
我正在一个项目上工作,我需要一些澄清,以高度安全的方式共享两个网站之间的数据。目前我正在使用表单后共享数据。但是我在考虑是否可以从站点2获取站点1的会话数据,因为我认为使用会话更安全。我不知道如何使用两个站点之间的会话,但我希望这里有人会知道。

:
Site 1编码

$_SESSION['customer_id'] = 'XYZ';  
$_SESSION['total_amount'] = '100';  
<a href=https://site2.com/do.php?session_id=<?=$_SESSION['session_id']?>>Click Here</a>  

站点2代码在do.php

$session_id = $_REQUEST['session_id'];  
$shared_data = bla_bla_bla_function($session_id);  
$customer_id = $shared_data['customer_id'];  
$total_amount = $shared_data['total_amount'];  

或者除了表单发布之外,还有什么方法可以在两个网站之间进行安全的数据共享,请告诉我。
谢谢你
你的,
Kaartikeyan R

发现解决方案

我通过CURL将客户ID和金额发送到第二个网站,在该网站中为此创建表中的记录,并使用记录ID生成加密ID,并返回加密ID。

所以在第一个网站我得到加密的ID,并使用它的URL重定向到第二个网站。

在第二个加密ID的网站上,我得到了客户ID和金额。

首先,永远不要这样做:

$session_id = $_REQUEST['session_id'];  

这会导致一个安全漏洞,我们称之为"会话固定"(详见:http://en.wikipedia.org/wiki/Session_fixation)。

看来你对保安很重视啊。如果您需要在站点1和站点2之间共享数据,您应该通过一个消费桥接器来实现:

1)。点击Site 1上的链接到一个处理程序文件,我们把它命名为redir.php。

2)。php首先检查现有的会话数据。

3)。php将相关信息写入DB行,并附带某种标识符(例如,用户ID + '_'+当前时间的MD5哈希值),加上'已消耗'标志,设置为false。

4)。php做301重定向到站点2,以及标识符。

5)。Site 2从DB中读取相关行。

6)。如果数据是好的,并且还没有被"消费",则返回一个成功并将数据标记为已消费。

7)。如果数据已被使用,则抛出某种错误。

还有更复杂的方法可以做到这一点,但我认为这可以处理你想要做的事情。

您可以为两个站点使用一个共同的会话后端,例如:将会话存储在数据库

要替换内置的文件后端,可以使用session_set_save_handler

函数