За последние 24 часа нас посетили 20642 программиста и 1826 роботов. Сейчас ищут 929 программистов ...

Доменная зона cookies

Тема в разделе "Прочие вопросы по PHP", создана пользователем Белый Тигр, 6 фев 2013.

  1. Белый Тигр

    Белый Тигр Активный пользователь

    С нами с:
    19 мар 2011
    Сообщения:
    28
    Симпатии:
    0
    Доброго времени суток. До сегодняшнего дня считал что указание в cookies доменной зоны "site.example.com" ограничивает их действие лишь указанным сайтом. Также думал что для доступности cookies поддоменам, нужно прописать зону "*.site.example.com". Но сегодня обратил внимание на описание соотв. параметра в функции setcookie():
    Получается что устанавливая зону "site.example.com" я делаю cookies доступными и для доменов "*.site.example.com". Кроме вариантов со старыми браузерами работающими по RFC 2109.
    Найдя RFC по HTTP (2616) ничего там про cookies не нашёл. Гугл по фразе "RFC HTTP cookies" выдаёт ссылку на 2109.
    Скажите пожалуйста, где можно найти актуальную на данный момент информацию по работе доменных зон в cookies?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    вроде, НЕ получается. site.example.com - только для этого домена, .site.example.com - для этого домена и всех поддоменов
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    Белый Тигр, дайте ссылку откуда цитируете. Верно то, что пишет Ganzal.
    Каноническая форма ".example.com"
     
  4. Белый Тигр

    Белый Тигр Активный пользователь

    С нами с:
    19 мар 2011
    Сообщения:
    28
    Симпатии:
    0
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    вроде не совсем так. тут отношение к домену второго уровня. устанавливая domain.tld браузер по стандарту добавляет слева точку и получается кроссдоменная печенька. а установка sub.domain.tld - будет работать только с этим доменом, не выходя не выше ни ниже. для всех *.sub вам руками нужно будет добавить точку слева - .sub.domain.tld.
    и субдомены не могут ставить печеньки соседям.

    в вашем приведенном случае - домен не второго уровня + точки нет. следовательно печенька будет работать только с одним доменом - site.example.com
     
  6. Белый Тигр

    Белый Тигр Активный пользователь

    С нами с:
    19 мар 2011
    Сообщения:
    28
    Симпатии:
    0
    Большое спасибо за разъяснения!
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    Да уж. В документации про setcookie отвратительно написали. Зато аналогичный параметр в функции session_set_cookie_params расписан как по нотам:

    Речь на самом деле о том же самом, т.к. сессионная кука это кука :)))
     
  8. Белый Тигр

    Белый Тигр Активный пользователь

    С нами с:
    19 мар 2011
    Сообщения:
    28
    Симпатии:
    0
    А для чего такая особенность работы с зонами второго уровня (точка слева подставляется сама)?
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    предположу, что д2у считается максимально доверенным - если ты устанавливаешь на нем куки, то значит и владеешь всем что ниже. а вот поддомены (д3+у) могут иметь разных владельцев, поэтому из соображений безопасности не проталкивается ниже - там может быть еще один владелесь, и соседям.

    вернувшись сегодня в эту тему задумался как работают зоны к примеру .com.ru. это зоной считается или полноценными доменами 1 и 2 уровня?
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    из общего правила выпадает только домен первого уровня -- как localhost. для него хоть ставь слева точку, хоть нет, одинаково НЕ распостраняется на под-домены.

    для остальных всё единообразно, 2-й или 13-й уровень, без разницы. с точкой виден на этом уровне и в под-доменах. без точки только на своем уровне.
     
  11. 3Jlou_OguHo4ka

    3Jlou_OguHo4ka Активный пользователь

    С нами с:
    9 фев 2013
    Сообщения:
    1
    Симпатии:
    0
    Всегда подставляю значение $_SERVER['HTTP_HOST'] и никаких проблем не возникает
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    3Jlou_OguHo4ka, не видеть проблему !== нет проблемы.

    Если сайт откликается на example.com и www.example.com (большинство сайтов так работают), то можно зайти на www.example.com, залогиниться, затем по какой-нибудь внутренней ссылке попасть на example.com и ОПА! внезапно ты не залогинен. а возможна и обратная ситуация. Понимаешь?
    $_SERVER['HTTP_HOST'] тупо равен домену из адресной строки, а не какому-то предопределенному домену.