Обработка Сookie в HTTP заголовке, параметр domain

Тема в разделе "PHP Pro", создана пользователем trooll, 6 фев 2011.

Статус темы:
Закрыта.
  1. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Доброго времени суток Сообщество.

    В общем при парсинге одного сайта, а конкретно при распарски HTTP заголовков строки установки кукисов не могу разобраться в одной вещи:

    В общем интересует следующий момент при обработки параметра domain в строке установки кукисов.

    Когда параметр domain равен конкретному сайту допустим "site.com" или "www.site.com" то кукисы устанавливаются к конкретному домену "site.com". То же самое и при доменах последующих уровней "one.site.com", "two.site.com" и т.д. в общем кукисы при этом варианте будут ставиться к конкретному домену.

    Но не могу понять как быть когда параметр domain равен ".site.com", как в этом случая привязывать куки к домену? Толи кука ставиться только к домену "site.com", то ли к множеству доменных имен 3-го уровня ("one.site.com", "two.site.com" и т.д.) или вообще ко всем доменам где встречается ".site.com" как основополагающее окончание?

    Народ что не у кого нет идеи и предложений, или тема настолько сложная?
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.549
    Симпатии:
    1.433
    вообще ко всем доменам где встречается ".site.com" а так же к самому "site.com"
    UPD: Подтверждено небольшим экспериментом вместе со сниффером(http://latteo.ru/soft-fiddler-prostoj-i-udobnyj-analiz-trafika) и google chrome
     
  3. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    1) Как ведет себя данный снифер при работе с HTTPS, замечал ли сбои?
    2) Есть русс. версия?
     
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.549
    Симпатии:
    1.433
    1) Для HTTPS иногда не загружаются сайты - в большинстве случаев помогает полная очистка кеша и прочих временностей(Opera, Chrome)
    В fiddler option вкладка general, стоит снимать галку "show messages when http..." при работе с HTTPS часто сыпет этой ошибкой.
    2) не находил, хотя усилий прилагал чуть

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

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Первые проблески сознания:)

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

    Внимание! Осторожно! Ниже много букв:)

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

    Спецификация RFC 2109 описывающая работу с Cookie (осторожно по линку буржуйский английский язык:(
    http://www.ietf.org/rfc/rfc2109.txt

    Сразу хочу заметить по каким то не понятным причинам не все браузеры ведут обработку и работу с кукие по тем правилам которые описаны этой спецификацией. Данное суждение касается только текущей темы: Обработка параметра domain, так же это суждение было основано на проведенном анализе пользователями интернета, а не лично мной. Линки на эти анализы привести не могу так как история в браузере потерлась, но при изучении выдачи ПС по этой теме, вы на них наткнетесь.

    И так в общем суть не в этом мы ведь не браузеры пишем, а правильные скрипты которые работают по спецификации;) или стараются работать по спецификации (об этом ниже).

    В общем после некоторых тестов с сайтами, браузером (Opera v11) и снифером (Proxomitron) и небольшого анализа, естественно сверяясь со с выше переведенной спецификацией, я пришел к следующим выводам:

    1. Параметр domain так же как и параметр path задает маску соответствия урла (доменной части) для установки кукисов, только в отличии от path для доменного имения.
    2. А так как это маска то при формирования и обработки есть определённые правила:
      • При установки точного значения параметру domain, куки будут ставиться только конкретному домену. То есть если значение равно "site.com" или "www.site.com", то куки и ставятся только для домена "site.com" и "www.site.com". Хочу заметить что вне зависимости того было ли наличие "www." в параметре, кукисы все равно ставятся как на "site.com" так и "www.site.com". Ну и для полноты примера еще один вариант: Если значение равно "one.site.com" или "www.one.site.com", то куки ставятся только для домена "one.site.com" и "www.one.site.com" и т.д. Я думаю здесь нечего сложного нет и принцип понятен.
      • При установки значения в виде ".site.com", устанавливается не точное соответствие а маска соответствия доменного имени в урле. То есть в данном случае кукисы буду установлены для "site.com", "www.site.com", "one.site.com", "www.one.site.com","two.one.site.com", "www.two.one.site.com" и т.д. Тут я думаю тоже не должно возникать вопросов. Ну и опять же для полноты примера еще один вариант: При установки значения в виде ".one.site.com" кукисы поставятся для "one.site.com", "www.one.site.com", "two.one.site.com", "www.two.one.site.com", "three.two.one.site.com", "www.three.two.one.site.com" и т.д. но не проставляются для "site.com" и "www.site.com".
    3. Очень интересный моментом является следующее. Внимание! Это необходимо учитывать при обработки полученных кукисов. По правилам спецификации в связи с безопасностью, дочерний домен не может поставить кукисы для родительского. То есть если со страницы "two.one.site.com" произведена попытка установки кукисов через параметр domain в заголовках ответа сервера для доменна "site.com" или "one.site.com" то по правилам эти кукисы не должны поставиться их необходимо отклонить. Домен "two.one.site.com" может проставить куки только для сомого себя либо по маске для последующих дочерних доменов.
    4. На практике после перебора определённого количества сайтов я заметил что параметр domain для установки кукисов в основном имеет значение ".site.com", реже "one.site.com" и очень редко ".one.site.com". Параметра "two.one.site.com" и ".two.one.site.com" я пока что вообще не встречал, но как говориться у нас еще все впереди:)

    Окончательный вывод:
    Из всего выше написанного, хочу сделать вывод. Если вы не пишите СуперМегоСкрипт, специфика которого заключается в работе с хреновой тучей большим количеством различных сайтов (доменных имен), то не морочите коту уши повторяйте чужих ошибок. Лично мое мнение и решение к которому я пришел это:
    Хранение и обработка всех кукисов c любых доменнов и прилюбом значении параметра domain, так как будто они ставятся при значении domain равному ".site.com".

    P.S.: Если вам не понятен вывод, то вы его не сможете понять пока не прочитаете весь пост и не осмыслите все написанное.

    P.S.S.: Специально поставил хайд что бы страждущим найти информацию по этой теме жизнь медом не казалась.
    Ибо я сцука зол что не хрена чего толкового в выдаче ПС по этой теме нет. Так что ребята извините, кому тема интересна регимся, осваиваемся и потом только читаем, а затем говорим спасибо.

    P.S.S.S: Внимание! Если захотите поблагодарить, то не стоит флудить, для благодарности есть кнопка СПАСИБО, а в особых случаях WM кошелек.
     
    latteo нравится это.
Статус темы:
Закрыта.