Кросс-доменные сессии - общие корзины покупок кросс-доменов - PullRequest
13 голосов
/ 02 июня 2010

мы решаем проблему с eshop (php, mysql). Клиент хочет иметь один и тот же интернет-магазин на двух доменах с общей корзиной покупок. В магазине покупатель может делать покупки без учетной записи пользователя (не может войти в систему). И есть проблема, как сделать общую корзину покупок междоменной.

Данные из корзины хранятся в сессиях, которые мы также сохраняем в базе данных. Но мы не можем решить проблему переноса данных по доменам. Выявление незарегистрированного пользователя не защищено от дыр ( исследование ).

Пример, как это должно работать

Клиент заходит на domainOne и добавляет некоторые вещи в корзину. Затем он переходит к domainTwo (по ссылке, однако, вводя адрес домена) и добавляет в корзину еще кое-что. В корзине у него есть вещи с обоих доменов (после обновления страницы).

У вас есть идеи, как решить эту проблему?

Что не сработало:

  • перенаправление невозможно из-за требований клиента
  • файлы cookie связаны с доменом
  • set_cookie с другим доменом не работает
  • самый простой способ - переносить только идентификатор сеанса (сохраненный в файлах cookie), но мы не знаем, как полностью защитить идентифицированных незарегистрированных пользователей.
  • есть ли другое место, где данные могут храниться на стороне клиента, кроме файлов cookie? (вероятно нет)
  • мы не можем использовать отправку sessionid по параметрам в URL (если пользователь щелкает ссылку на другой домен) или разрешение реферера заголовка, поскольку мы не знаем, как пользователь может получить доступ к другому домену.

Если вы не можете меня понять, задайте мне вопрос. Если вы думаете, что иметь eshop на двух доменах с общей (общей) корзиной - плохая идея, не говорите мне, мы это знаем.

Спасибо за каждый ответ.

Ответы [ 11 ]

0 голосов
/ 03 июня 2010

SSO.

CartA имеет iframe, который 1) проверяет, "активен" ли пользователь (имеет сеанс) 2) создает ли сеанс CartB имеет iframe, который делает 1) или 2)

iframe загружается из домена единого входа (любой домен, который вы можете иметь)

Решение единого входа: создавайте свои или используйте другие - например, simplesamlphp или что-то в этом роде ...

И не нужно передавать сеансы / параметры с URI ...

...