Как я могу использовать куки в двух разных доменах? - PullRequest
23 голосов
/ 24 ноября 2008

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

Ответы [ 5 ]

17 голосов
/ 24 ноября 2008

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

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

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

-Adam

2 голосов
/ 27 мая 2009

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

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

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

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

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

1 голос
/ 24 ноября 2008

Я не уверен насчет последствий для безопасности, но есть настройка 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 в другом домене.

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

1 голос
/ 24 ноября 2008

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

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

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

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

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

1 голос
/ 24 ноября 2008

Нет, куки связаны с доменом. На это есть ограничения, и это называется межсайтовым скриптингом.

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

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

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

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

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