在两个网站之间分享会话

时间:2011-07-13 12:38:33

标签: php session

嗨,谢谢你... 我正在开发一个项目,我需要一些澄清,以高度安全的方式在两个站点之间共享数据。目前我正在使用Form Post来共享数据。但我想是否有从site-2获取site-1会话数据的选项,因为我认为使用会话更安全。我不知道如何使用两个站点之间的会话,但我希望有人知道。

像这样:
网站1编码

$_SESSION['customer_id'] = 'XYZ';  
$_SESSION['total_amount'] = '100';  

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

do.php中的网站2代码

$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

找到解决方案

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

所以在First网站上我获得了加密ID,并在URL重定向到第二个网站时使用它。

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

2 个答案:

答案 0 :(得分:17)

的Urk。首先,从不,EVER 执行此操作:

$session_id = $_REQUEST['session_id'];  

这导致我们称之为“会话固定”的安全卡车洞(更多信息:http://en.wikipedia.org/wiki/Session_fixation)。

看起来你的安全性非常高。如果您需要从站点1到站点2共享数据,则应通过单个消费桥接来实现:

1)。单击站点1上的链接到处理程序文件,我们称之为redir.php。

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

3)。 Redir.php将相关信息写入数据库行,以及某种标识符(例如,用户ID的MD5哈希+'_'+当前时间),加上'消费'标志,设置为false。

4)。 Redir.php执行301重定向到站点2,以及标识符。

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

6)。如果数据良好且尚未“消耗”,则返回成功并将数据标记为已消耗。

7)。如果数据已被消耗,则会产生某种错误。

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

答案 1 :(得分:1)

您可以为两个站点使用公共会话后端,例如。将会话存储在数据库中

要替换内置文件后端,您可以使用函数session_set_save_handler