Подтвердить что ты не робот

Как использовать файлы cookie в двух разных доменах?

Мне нужно разделить SSO-информацию между двумя разными доменами с файлом cookie, это можно сделать в PHP и как?

4b9b3361

Ответ 1

В обоих доменах поместите изображение или другой веб-элемент, который вытащили из другого домена. Используйте URL-адрес, чтобы уведомить другой домен, что пользователь X находится в домене A, и пусть домен B связывает этот идентификатор пользователя с этим пользователем в своей системе.

Немного сложно выполнить правильно, но если вы подумаете, что это будет хорошо, вы будете работать.

Винько указывает в комментарии (спасибо!), что я не должен считать само собой разумеющимся, что вы понимаете риски безопасности. Если эта информация имеет какое-либо значение для кого-либо, вы должны убедиться, что используете правильное шифрование, аутентификацию и т.д., Чтобы не освобождать конфиденциальную информацию и избегать различных атак (повтор, человек посередине и т.д.). Это не должно быть слишком обременительным, так как вы контролируете оба веб-сайта, и вы можете выбрать секретный секретный ключ для обоих, поскольку связь происходит только между двумя серверами через этот специальный URL-адрес. Имейте это в виду, хотя.

-Adam

Ответ 2

Если у вас есть два сайта, использующих один и тот же домен, и вы хотите делиться куки файлами между ними, установите для этого домена что-то вроде этого в вашем файле settings.php:

ini_set('session.cookie_domain', '.EXAMPLE.com');

Убедитесь, что вы включили ведущий '.' перед именем домена, или он не будет работать.

Это позволяет пользователям поддерживать статус входа в систему между любыми сайтами, настроенными для файлов cookie домена.

Это может также иметь отрицательные побочные эффекты, поэтому не делайте этого, если вы не знакомы со всеми куки файлами, используемыми для сайтов, с которыми вы хотите совместно использовать файлы cookie.

Ответ 3

Нет, файлы cookie привязаны к домену. Существуют ограничения на это, и они называются межсайтовыми сценариями.

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

Вы можете глобально переписать все ссылки на ваш второй сайт, чтобы получить информацию о файлах cookie с первого сайта.

Вы сохранили бы все файлы cookie с сайта-a в базу данных, которую они оба могли прочитать, а затем программно добавив querystring cookie-id во все ссылки на сайт-b, затем вы найдете этот идентификатор файла cookie и повторно установите куки в новом домене.

Существует действительно хорошая библиотека абстракции базы данных PHP (PHP ADODB), и у нее есть плагин для совместного использования сеанса, который делает все это целым намного проще.

Ответ 4

Хорошо, если ваши домены - это просто разные поддомены, вы можете сделать это простым путем, создав файл cookie .yourdomain.com. Затем cookie передается вместе со всеми запросами по всем субдоменам.

Это не так просто, если вы хотите совместно использовать куки файлы между разными доменами, поскольку браузеры рассматривают его как угрозу безопасности.

Каков точный пример?

В случае какого-либо программного обеспечения, такого как Google Analytics и других изображений отслеживания и т.д., вы можете быть вынуждены использовать P3P, чтобы браузер знал, что вы не заботитесь о безопасности при отправке файлов cookie. Затем браузер, запрашивающий изображение, получает куки файл как часть ответа, а также проверяет P3P. Если все в порядке, он сохраняет файл cookie на жестком диске, и в следующий раз, когда вы попросите изображение, которое находится на вашем веб-сайте (но является частью страницы других доменов), браузер отправит файл cookie. Но я думаю, это не помогает; -)

Я никогда не использовал значение cookie для всех доменов в прямом смысле этого слова.

Ответ 5

Я не уверен в значениях безопасности, но есть параметр Apache, который позволяет вам изменить домен файла cookie.

# in httpd.conf (or equivalent)
php_value session.cookie_domain mydomain.com

Я успешно использовал этот метод для субдоменов, но никогда не пытался использовать разные области.

Существует также метод установки направления переменных в PHP, описанного в http://us.php.net/manual/en/function.session-set-cookie-params.php. В документации не упоминается способность или невозможность установить файлы cookie в другом домене.

В этой же теме есть другой поток, но я не думаю, что он был когда-либо достаточно отвечен.