Webrium
Подписаться

Что такое куки (cookie) и почему сайт вас помнит

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

Схема совпадения: браузер с куки распознаётся сайтом, без куки — нетБраузер с кукиБраузер без куки

Как сайт вас узнаёт

Кука — это короткая строчка текста, которую сайт просит браузер запомнить и приносить обратно при следующих обращениях к этому сайту. По-русски пишут «куки», в оригинале — cookie, а в окнах согласия встречается устоявшееся «файлы cookie»: всё это одно и то же. Ближе всего к куке номерок в гардеробе: вы сдаёте пальто, получаете номерок, кладёте его в карман и забываете о нём, а на выходе показываете — и вам отдают именно ваше пальто, не чужое и не первое попавшееся. Гардеробщику при этом не нужно помнить вас в лицо: ему хватает номерка.

Когда вы открываете сайт, браузер автоматически прикладывает к запросу все куки, которые относятся к этому сайту. Сервер видит их и понимает: «А, это снова тот же браузер». Так сайт «помнит» вас — точнее, не вас лично, а именно этот браузер на этом устройстве. Другой браузер, другой профиль или приватное окно — отдельные наборы кук, и для сайта это как будто разные люди.

Зачем сайту метка

Сервер не хранит в памяти, кто к нему заходил. Каждый запрос для него — как будто новый посетитель. Без метки он не отличит вас от незнакомца: не поймёт, что вы уже вошли в учётную запись, не сохранит товары в корзине, не запомнит настройки языка или темы.

Пароля в куке входа нет: часто в ней лежит номер сеанса — случайная строчка, которую сервер выдал при входе. По этому номеру он находит у себя ваши данные: кто вошёл, что положил в корзину, какие настройки выбрал. Бывает и иначе: сайт кладёт в куку сами данные, заверенные его подписью, и тогда ему достаточно проверить подпись. В обоих случаях подобрать или подделать такое значение практически нельзя, а скопировать можно: если кто-то получит вашу куку входа, он сможет зайти под вашей учётной записью, пока сессия не истечёт или её не отзовут.

Кроме входа, в куках хранят и другие мелочи: отметку о том, что вы согласились на использование кук, выбор языка. Идентификатор счётчика нужен владельцу сайта, чтобы отличать браузер, который уже заходил, от нового. Выбор языка и отметка о согласии нужны для вашего удобства: сайт не спрашивает одно и то же заново.

Как кука появляется и возвращается

Сайт может попросить браузер запомнить куку двумя способами. Первый — в ответе на запрос: сервер присылает специальную строчку с именем, значением и настройками куки. Второй — скрипт на странице записывает куку сам: так делают счётчики посещаемости.

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

Если запрос начат с чужой страницы — например, вы нажали на ссылку на другом сайте, — уйдёт ли с ним кука, зависит от настроек самой куки и браузера. Почему это важно и что здесь выбирает разработчик, разобрано в материале о запросах с чужого сайта.

Сколько кука живёт и кому достаётся

Кука может быть временной: срок ей сайт не назначил. Так поступают, когда метка нужна только на время одного визита; куке входа сайт может, наоборот, назначить срок, чтобы не спрашивать пароль после каждого перезапуска браузера. Временная кука обычно исчезает, когда вы закрываете браузер.

Если сайт указал срок жизни куки, она будет храниться до этого момента. Но срок — это просьба, а не гарантия: браузер может сократить его, если решит, что кука слишком долго живёт. Кука, поставленная скриптом, часто живёт меньше, чем кука от сервера.

Если домен при установке не указан, кука достаётся только тому точному адресу, который её поставил, без поддоменов. Если указан — этому домену и всем его поддоменам. Например, кука с доменом .example.com достанется и shop.example.com, и blog.example.com. Так сайт делится кукой между своими поддоменами — адресами с общим окончанием: указание домена расширяет круг получателей куки, а не сужает его.

Своя и сторонняя: в чём разница

Названия «своя» и «сторонняя» не про саму куку, а про то, как она используется. Когда вы открываете сайт, все куки его домена — свои. Но на странице могут быть встроены ресурсы с других доменов: счётчики посещаемости, рекламные блоки, кнопки соцсетей. Куки этих доменов для открытого сайта — сторонние.

Представьте, что вы заходите в интернет-магазин. Магазин ставит свою куку, чтобы запомнить вашу корзину. Но на его странице есть рекламный блок от рекламной сети. Эта сеть тоже ставит куку — и когда вы перейдёте на другой сайт, где есть её реклама, сеть увидит ту же куку и поймёт, что это снова вы. Так сторонняя кука связывает посещения разных сайтов.

Браузеры по-разному относятся к сторонним кукам: некоторые блокируют их по умолчанию, некоторые нет. Если вы хотите ограничить их работу, проверьте настройки своего браузера.

Куки и кэш: что пропадёт при очистке

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

Куки — это про вашу сессию и настройки. Если вы удалите куки, сайты забудут, что вы вошли, сбросят корзину и настройки. Обычно в настройках браузера есть пункт, который удаляет куки вместе с другими данными сайтов.

Тупик: почему «очистить всё» не помогает

При любой неполадке, а то и просто из осторожности, первым делом нажимают «очистить всё за всё время». Такая чистка удаляет куки всех сайтов сразу и выводит вас из всех учётных записей разом. Неполадку одного сайта, вызванную его испорченной или устаревшей кукой, она устраняет, но входить заново придётся везде, хотя хватило бы удалить куки одного этого сайта — где это делается, сказано ниже.

А осторожности такая чистка не служит: того, что о вас уже собрано, она не стирает — почему, разобрано в материале Что компании знают о вас и зачем им это. Не завершает она и сессию на сервере: на чужом или общем компьютере нужен выход из учётной записи, а не только чистка.

Позиция редакции

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

Окно согласия на сайте спрашивает не только про куки. Оно касается и других способов сбора данных: аналитики, рекламы, персонализации. Куки, без которых сайт не работает (вход, корзина), ставятся независимо от вашего ответа.

Сайт может включить для куки три защитных свойства. Каждое задаётся для конкретной куки отдельно: кука без них ходит и по незащищённому соединению, читается скриптами страницы, а уйдёт ли она с запросом с чужого сайта — браузеры решают по-разному. Вот что даёт каждое свойство, когда оно включено:

  • Безопасность: кука уходит только по защищённому соединению, и страница, открытая по незащищённому, не может её поставить.
  • Недоступность скриптам: кука не видна коду страницы, но всё равно отправляется с запросами — защищена от чтения, а не от использования.
  • Ограничение отправки: сайт ограничивает отправку куки с запросами, начатыми с чужого сайта. Насколько строго — выбирает он сам, а если не выбрал, браузеры ведут себя по-разному. Подробнее — в материале о том, как чужой сайт действует от вашего имени.

Посмотреть куки открытого сайта можно через настройки сайта у адресной строки или в инструментах разработчика браузера. Там же их можно удалить — для одного сайта, не трогая остальные.

Когда эта позиция неверна? Если сайт сам передаёт сведения о посетителе третьим сторонам со своего сервера, а не через сторонние куки. В этом случае деление на свои и сторонние ничего не говорит о том, какие данные и кому достаются. Например, магазин может отправлять рекламной сети список ваших покупок напрямую — тогда даже без сторонних кук сеть получит информацию о вас.

С чем это связано

Метка над заголовком говорит, зачем туда идти: продолжить тему, перейти к практике или увидеть возражение.

Разделённое поле: ваш сайт и чужой сайт, запросы пересекают границу между нимиВаш сайтЧужой сайт
Углубление

CSRF: как чужой сайт действует от вашего имени

Как злоумышленники используют куки для атак на сайты и как разработчикам закрыть эту уязвимость.

Граница между данными и кодом, которую пересекает вредоносный скриптДанныеКод
Углубление

XSS: как чужой скрипт оказывается на вашей странице

Как чужой скрипт оказывается на странице и добирается до куки сессии — и что закрывает, а чего не закрывает кука, недоступная скриптам.

Две угрозы по разные стороны: одна закрывается хранилищем, другая — серверомчужой скриптчужой сайт
Практика

Токен в браузере: где его хранить

Как выбрать хранилище для токена в браузере — и почему одно место не защищает от всех угроз сразу.

Два маршрута до угаданного желания: короткий — подслушать разговор, но дорогой и рискованный; длинный — собрать записи о шагах пользователя, дешёвый и настоящийПрослушка — тупикДанные о шагах
Просто

Что компании знают о вас и зачем им это

Как сервисы собирают ваш цифровой портрет — от кликов до предпочтений — и почему это работает без подслушивания.

Письмо по вторникам

Один разбор недели и короткий список того, что изменилось. Без дайджестов на сорок ссылок.

Начните вводить — материалы появятся здесь.

↑↓ выбрать · Enter открыть · Esc закрыть