Поделиться сессией между двумя сайтами - PullRequest
8 голосов
/ 13 июля 2011

Привет, спасибо заранее ...
Я работаю над проектом, мне нужны некоторые разъяснения для обмена данными между двумя сайтами в режиме высокой степени безопасности.В настоящее время я использую форму Post Post для обмена данными.Но я думаю о том, есть ли возможность получить данные сеанса сайта 1 с сайта 2, потому что я думаю, что использование сеанса более безопасно.Я не знаю, как использовать сеансы между двумя сайтами, но я надеюсь, что кто-то здесь будет знать.

Как это:
Код сайта 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 на второй веб-сайт, где для этого создаю для этого запись в таблице, генерирую зашифрованный идентификатор с идентификатором записи и возвращаю зашифрованный идентификатор.

Итак, на первом веб-сайте я получаю зашифрованный идентификатор и использую его при перенаправлении URL-адреса на второй веб-сайт.

На втором веб-сайте с зашифрованным идентификатором я получаю идентификатор клиента и сумму.

Ответы [ 2 ]

17 голосов
/ 13 июля 2011

Urk.Прежде всего, никогда, КОГДА-ЛИБО сделайте это:

$session_id = $_REQUEST['session_id'];  

Это создает дыру в грузовике безопасности, которую мы называем «фиксацией сеанса» (подробнее: http://en.wikipedia.org/wiki/Session_fixation).

Похоже, вы довольно серьезно относитесь к безопасности.Если вам нужно обмениваться данными с сайта 1 на сайт 2, вы должны сделать это через один мост потребления:

1).Нажмите на ссылку на сайте 1 с файлом обработчика, назовем его redir.php.

2).Redir.php сначала проверяет существующие данные сеанса.

3).Redir.php записывает соответствующую информацию в строку БД вместе с каким-то идентификатором (скажем, MD5-хеш идентификатора пользователя + '_' + текущее время), а также с флагом «потреблено», установленным в false.

4).Redir.php выполняет перенаправление 301 на сайт 2 вместе с идентификатором.

5).Сайт 2 читает соответствующую строку из БД.

6).Если данные правильные и еще не «использовались», верните успех и отметьте данные как использованные.

7).Если данные были использованы, выведите какую-то ошибку.

Есть более сложные способы сделать это, но я думаю, что это обрабатывает то, что вы пытаетесь сделать.

1 голос
/ 13 июля 2011

вы можете использовать общий сеансовый бэкэнд для обоих сайтов, например.сохранить сеанс в базе данных

, чтобы заменить встроенный файловый бэкэнд. Вы можете использовать функцию session_set_save_handler

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...