PHP Multi сайт Войти - PullRequest
       12

PHP Multi сайт Войти

6 голосов
/ 23 декабря 2008

В настоящее время я работаю над проектом, который охватывает несколько доменов. Я хочу, чтобы пользователь мог войти на один сайт и одновременно войти на все остальные.

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

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

Теперь я нашел способ сделать это в Firefox (используя теги изображений, которые исполняют PHP-скрипты в других доменах, по сути, создавая разные куки в разных доменах), но этот метод не работает в IE (не проверено Opera или Safari и т. д. пока).

У кого-нибудь есть идеи о том, как заставить это работать в IE?

Ответы [ 5 ]

3 голосов
/ 23 декабря 2008

Посмотрите на мой вопрос Отслеживание междоменных пользователей .

Что вам нужно сделать, это добавить еще один HTTP-заголовок к «изображению».

Цитата из Переменные сеанса теряются, если вы используете FRAMESET в Internet Explorer 6 :

Вы можете добавить компактную политику P3P заголовок вашего дочернего контента, и вы могу заявить, что никаких вредоносных действий нет выполняются с данными пользователь. Если Internet Explorer обнаруживает политика удовлетворительная, то интернет Проводник разрешает установку файла cookie.

Простая компактная политика, которая выполняет этот критерий соответствует:

P3P: CP = "CAO PSA OUR"

Этот пример кода показывает, что ваш сайт предоставляет вам доступ к вашему собственному контактная информация (САО), что любая только проанализированные данные «псевдоанализ», что означает, что данные подключены к вашему онлайн персона, а не к вашему физическому идентичность (PSA), и что ваши данные не поставляется никаким сторонним агентствам для использования этими агентствами (OUR).

Вы можете установить этот заголовок, если используете Response.AddHeader метод в ASP стр. В ASP.NET вы можете использовать Response.AppendHeader метод. Вы можете использовать оснастку управления IIS (inetmgr) для добавления в статический файл.

Выполните следующие шаги, чтобы добавить этот заголовок в статический файл:

  1. Нажмите Пуск, нажмите Выполнить и введите inetmgr.
  2. На левой навигационной странице щелкните соответствующий файл или каталог на вашем веб-сайте, к которому Вы хотите добавить заголовок, щелкните файл правой кнопкой мыши, а затем нажмите Свойства.
  3. Откройте вкладку HTTP-заголовки.
  4. В групповом поле Настраиваемые заголовки HTTP нажмите Добавить.
  5. Введите P3P для имени заголовка, а затем для компактной политики строка типа CP = ..., где "..." соответствующий код для вашего компакта политика.
1 голос
/ 23 декабря 2008

Это только я, или это звучит как ваш CSRF, используя свою технику, используя изображения, которые работают в Firefox?

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

1 голос
/ 23 декабря 2008

Не уверен, является ли это хорошим предложением на данном этапе вашего развития, но вам определенно следует взглянуть на Single Sign-on , если вы хотите сделать это "правильным" способом.

0 голосов
/ 23 декабря 2008

Возможно, я немного глуп, но не могли бы вы установить куки для каждого доменного имени при входе в систему? Таким образом, вместо того, чтобы иметь один cookie при входе на сайт А, у них пять, или сколько у вас сайтов?

setcookie(A, $sessid, expire, path, domainA.com);
setcookie(B, $sessid, expire, path, domainB.com);
setcookie(C, $sessid, expire, path, domainC.com);
setcookie(D, $sessid, expire, path, domainD.com);
0 голосов
/ 23 декабря 2008

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

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