Виды cookies

Виды cookies Хостинг


Виды cookies

Cookie (англ. «печенье»), они же куки — текстовые файлы с информацией о пользователе, его предпочтениях и действиях на сайте.

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

Что такое cookie?

Зачем нужны cookie?

Сессионные cookieПостоянные cookieСторонние cookieСупер-cookieЗомби-cookie

Чем опасны cookie?

Как защитить свои данные?

Как почистить устройство от cookie?

Как почистить Chrome от cookie?Как настроить сбор данных в Chrome?Как почистить Яндекс. Браузер от cookie?Как настроить сбор данных в Яндекс. Браузере?

Основные функции куки-файлов:

Кроме определения и основных функций сразу отметим также 2 важные вещи:

Куки нужны для того, чтобы браузер помнил вас и выдавал страницы уже с вашими сохраненными данными и запросами даже спустя большое количество времени. Если не использовать куки, то браузер будет думать, что вы на сайте никогда не были, персональных настроек у вас нет, и выдаст вам «заводские».

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

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

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

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

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

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

Их еще называют флэш-куки (flash cookie). Это вечные куки, так как они могут восстанавливаться даже после того, как пользователь их удалил. Они нужны для того, чтобы системы могли опознать вас даже после тотальной очистки браузера. Компании используют их, чтобы собирать информацию о покупательской деятельности пользователя в сети, его персональные данные и затем предлагать персонализированную рекламу.


Виды cookies

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

Как защитить свои данные?

Можно уберечь свои данные от использования мошенниками несколькими способами:


Виды cookies

Периодически нужно удалять куки-файлы, чтобы:

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

Разберем способы очистки от куки-файлов и настройки на сбор данных в популярных браузерах: Google Chrome и Яндекс. Браузер.

Вам надо зайти в настройки браузера — сделать это можно двумя способами: либо комбинацией Ctrl + Shift + Delete, либо через кнопку «Настройки» в правом верхнем углу, затем «Конфиденциальность и безопасность» и «Очистить историю». Оба способа приведут к открытому окну «Очистка истории».


Виды cookies

Виды cookies

Виды cookies

Далее вы выбираете временной диапазон:

После выбранного периода ставите галочку напротив Файлы cookie и другие данные сайтов и нажимаете «Удалить данные». Готово.

Как настроить сбор данных в Chrome?

Вы можете в любой момент запретить или разрешить браузеру собирать ваши данные. В том же разделе «Конфиденциальность и безопасность» выбираете «Файлы cookie и другие данные сайтов».


Виды cookies

Виды cookies

Далее выберете удобный для вас формат сбора данных. Не рекомендуется полностью отключать куки, потому что это может помешать рабочим функциям некоторых сайтов.

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

Настройка в Яндексе очень похожа на шаги для Chrome. В настройки вы можете зайти тоже по горячим клавишам Ctrl + Shift + Delete или через кнопку «Настройки» в правом верхнем углу, затем «Дополнительно» и «Очистить историю».


Виды cookies

Виды cookies

Далее также можно выбрать временной диапазон:

После выбранного периода ставите галочку напротив «Файлы cookie и другие данные сайтов и модулей» и нажимаете «Очистить». Готово.

Как настроить сбор данных в Яндекс. Браузере?

В Яндекс. Браузере вы тоже можете настроить сбор данных и управление ими. Нажмите на значок «Настройки» в правом верхнем углу.


Виды cookies

Далее выберите разделы «Сайты» и «Расширенные настройки сайтов».


Виды cookies

Промотайте страницу вниз, и вы увидите расширенные настройки для cookie-файлов. Выберите нужный вам вариант; в «Настройке сайтов» при необходимости добавьте конкретные сайты, которым разрешено использовать куки, разрешено только на период одной сессии или запрещено вовсе.


Виды cookies

Заключение

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

Владельцам лендингов важно не забывать про оптимизацию нижней половины посадочной страницы: именно там можно разместить уведомления о файлах cookie и вашу политику конфиденциальности. А Редактор LPgenerator поможет вам сделать идеальный футер.

Высоких вам конверсий!

Время на прочтение

Перед тем, как запускать свой сайт или приложение, в котором вы собираетесь использовать cookies или иные идентификаторы (local storage, AAID, UDID и т.д.) устройств/сессии пользователя, необходимо выполнить требования законодательства о персональных данных.

Читайте также:  Лучшие хостинг-провайдеры: найдите идеальный сервер для своего сайта

Зачем? Во-первых, вы выстраиваете открытые и честные отношения со своими пользователями. Во-вторых, вы будете готовы к проверкам регуляторов. В-третьих, вы сможете избежать штрафов, которые могут достигать 4% годового оборота своей компании.

Давайте разберемся, как онлайн-идентификаторы связаны с защитой персональных данных.

Согласно ФЗ «О персональных данных» и GDPR куки-файлы и иные идентификаторы пользователя относятся к персональным данным, поскольку позволяют теоретически определить конкретного субъекта или выделить его среди других лиц.

Наиболее известным делом по рассматриваемой нами теме стал судебный спор Vidal-Hall v. Google (2015). Используя сookieы-файлы, компания Google осуществляла сбор информации об интернет-трафике пользователей. Заявители, не будучи осведомлены о незаконных действиях ответчика, настаивали на привлечении последнего к ответственности за нарушение порядка использования сookies – персональных данных, которые позволяют вычислить пользователей.

Следовательно, в отношении cookies и прочих идентификаторов необходимо соблюдать требования законодательства.

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

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

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

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

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

Законодательство о связи или электронных коммуникациях может предусматривать специальные условия для записи куки или иных присвоенных идентификаторов устройству. Так, европейская директива об электронных коммуникациях (e-Privacy Act) предписывает, что любая информация может быть загружена на устройство пользователя (браузер) только с его предварительного согласия. Из этого правила выделяются два случая, когда согласие пользователя не будет требоваться. Во-первых, это ситуация, когда установка куки требуется для установления или передачи сообщения через электронную сеть, а, во-вторых, случай, когда куки устанавливаются для предоставления доступа к услугам информационного общества (платформы за подписку, маркетплейсы и т.д.).

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

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

Уведомление

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

В идеале баннер должен всплывать при первом переходе пользователя на сайт / в приложении. В уведомлении должна содержаться информация о 1) собираемых куки-файлах и иных идентификаторах, 2) целях их сбора, 3) сроках хранения в памяти устройства,

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

Куки-баннер или страница с настройками также не должны содержать иных «темных» паттернов, которые сбивают пользователей с толку — не стоит навязывать пользователю выбор куки при каждой смене страницы, а также прятать настройки в самые глубины сайта.


Виды cookies

Вот пример замечательного куки-баннера от Storytel:

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

Что такое куки?

Существует три основных версии, почему такие файлы начали называть cookies:

Все же первая версия выглядит наиболее логичной и правдоподобной. Действительно, для пользователя (точнее, его ПК или мобильного устройства) файлы куки играют роль «крошек печенья», которые помогают ему вернуться на сайт, а серверу — упростить ему путь.

Считается, что первым начал использовать термин cookie-files (или просто cookies) разработчик первого веб-браузера Netscape Navigator Ли Монтулли. Изначально он хранил в куки-файлах информацию о заказах, которые сделал пользователь в интернете, тем самым создавая «виртуальную корзину покупок». Технология оказалась настолько удобной, что впоследствии поддержка cookies стала применяться на всех веб-браузерах к любым сайтам независимо от их направленности и содержания.

Разница между куки, кэшем и автозаполнением

Куки следует отличать от похожих функций:

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

Виды куки-файлов

Существует два основных типа cookie-файлов, различающихся по времени хранения на ПК пользователя:

Помимо этого, существуют и другие типы куки-файлов:

Какие данные хранятся в cookies?

Записать в куки-файлы можно практически любую информацию в зависимости от того, что нужно сайту, например:

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

Где хранятся и как удалить файлы куки?

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

Куки можно удалить с компьютера следующими способами:

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

Привет! Меня зовут Ивасюта Алексей, я техлид команды Bricks в Авито в кластере Architecture, а это мой цикл статей о протоколе HTTP. В первой части мы уже познакомились с версией протокола 1.0 и поговорили о структуре ответов и запросов. Теперь пришло время узнать, что такое Cookies и для чего нужен CORS.

Читайте также:  Майнинг отель и хостинг | GreenChain mining hotel


Виды cookies

HTTP — это протокол без сохранения состояния. Это значит, что когда на сервер поступают два запроса, он не понимает: их послал один клиент или разные. В реальных приложениях постоянно надо идентифицировать пользователя: проверять, авторизован ли он, выводить пользовательские рекомендации, хранить корзину выбранных товаров в магазине. Для этого есть механизм Cookies.

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

Куки выглядят, как пара ключ=значение. Для их установки сервер должен в ответе на запрос клиента прислать заголовок Set-Cookie со значением.

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

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

Обычно кукам устанавливается фиксированное время жизни. Это можно сделать двумя способами:

Допустим, срок жизни куки из предыдущего примера должен истечь 1 января 2030 года. Тогда нужно прислать заголовок со значением куки и датой истечения срока годности, разделёнными точкой с запятой.

Set-Cookie: token=123abc; Expires=Tue, 01 Jan 2030 00:00:00 -0000

Теперь с наступлением 1 января 2030 года кука станет невалидной и удалится.

В альтернативном варианте срок жизни куки должен истечь через две минуты. Тогда вместо даты нужно прислать количество секунд в параметре MAX_AGE:

Set-Cookie: token=123abc; MAX_AGE=120

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

Set-Cookie: token=123abc; Expires=Thu, 05 Aug 2021 18:45:00 -0000; MAX_AGE=120

Стандарт RFC6265 1, описывает куки. Он закрепляет правило, что имена параметров — регистронезависимые. Поэтому эта запись тоже будет валидной:

Область видимости Cookies

Параметры domain и path управляют областью видимости куки и определяют, на каких поддоменах и для каких URL они будут работать. Если не указать параметр domain, то он по умолчанию будет равен хосту сайта, например, example.com. Тогда куки не будут работать для поддоменов, например, test.example.com. Если указать значение domain, то куки будет работать для хоста и всех поддоменов.

Параметр path указывает, по каким URL при запросе ресурсов необходимо передавать куку в заголовке. Если установить path=/, то куки будут отправляться для всех запросов. Если указать значение path=/api, то они будут передаваться для всех запросов на ресурсы, URL которых начинается с /api.

Расширим предыдущий пример:

Set-Cookie: token=123abc; expires=Thu, 05 Aug 2021 18:45:00 -0000; max_age=120; domain=example.com; path=/api

Уникальный идентификатор куки — их ключ (в примере — token), значения domain и path. Если нужно переопределить значение ранее установленных куки, то эти три параметра должны совпадать. В противном случае браузер создаст новые. А ещё не существует метода для удаления куки. Можно только установить её повторно и указать дату истечения срока годности expires в прошлом или нулевой или отрицательный max_age.

Защита Cookies

Куки представляют два параметра, которые защищают их от различных атак.

Параметр secure говорит о том, что такие куки будут отсылаться только по HTTPS-соединению. Если сайт работает по HTTP, то значение не будет передано. Secure не обеспечивает дополнительного шифрования, поэтому не стоит хранить чувствительные данные в куках.

Параметр httpOnly создаёт куки, к которым нельзя обратиться из кода JavaScript в браузере. Так можно избежать XSS-атак.2

Отправка на сервер

Куки отправляются на сервер при каждом запросе, если не подошла их дата истечения срока годности и параметры path и domain соответствует URL ресурса. Они передаются одной строкой в значении заголовка запроса Cookie и разделяются точкой с запятой.

Cookie: key1=value1; key2=value2;

25 мая 2011 года в силу вступила Директива 2009/136/EC Евросоюза о куки.3 Она требует запрашивать разрешение пользователя на получение и использование информации с его компьютера. Поэтому почти каждый сайт при первом посещении или после очистки кеша выводит баннер с запросом на использование Cookies.

CORS

По умолчанию в браузере действует политика безопасности Same Origin Policy. Это означает, что доступ к ресурсам можно получить, только если источник этих ресурсов и источник запроса совпадают. Это сделано для того, чтобы некий сайт хакеров evil.com не мог получить доступ, например, к почтовому ящику на домене gmail.com и прочитать письма. Эта стратегия работала долгое время, когда JavaScript считался браузерным языком для украшения страничек и не умел делать AJAX-запросы.

Со временем разработчики поняли, что хотят уметь отправлять данные на сервер и получать их при помощи асинхронных запросов. Но политика Same Origin не позволяет сделать этого. После долгих обсуждений был предложен механизм CORS — Cross-Origin Resource Sharing.

Этот механизм использует дополнительные HTTP-заголовки. С ним браузер пользователя получает разрешения на доступ к выбранным ресурсам, если домен сайта и домен запрашиваемого ресурса отличаются.

Например, сайт находится на домене example.com. Запрос отправляется на сайт, который находится на домене web-server.com. Для начала браузер должен понять, сложный этот запрос или простой. Простой запрос отправляется методом GET, POST или HEAD и содержит только следующие заголовки:

Остальные запросы считаются сложными. Например, если он отправляется методом DELETE или содержит заголовок Authorization. Простые запросы браузер отправляет напрямую на сервер и автоматически добавляет к ним заголовок Origin. Его значение равно URL хоста, с которого отправляется запрос. В нашем примере это Origin: https://example.com.

POST /path HTTP/1.0
Host: web-server.com
Origin: example.com
Content-Type: text/plain

Сервер принимает такой запрос и определяет, разрешить хосту получить этот ресурс или отказать в запросе. Для этого в ответе используется специальный заголовок Access-Control-Allow-Origin. Он определяет, с каких источников разрешено принимать запросы. Если указать Access-Control-Allow-Origin: http://example.com, то запрос на ресурс будет всегда разрешён только домену example.com. Если нужно разрешить получать ресурс с любого домена, то в ответе на запрос должен быть заголовок  Access-Control-Allow-Origin: *.

Браузер заблокирует ответ на запрос, если:

Если браузер обнаружит сложный запрос, то сначала отправит серверу preflight — предварительный запроc при помощи HTTP-метода OPTIONS. В запрос при этом добавляется заголовок Access-Control-Request-Method, в значении которого указывается HTTP-метод оригинального запроса.

Если в оригинальном запросе передаются заголовки не из списка разрешённых, то в запрос OPTIONS дополнительно добавляется заголовок Access-Control-Request-Headers. В его значении через запятую перечисляются все заголовки оригинального запроса.

В случае отправки preflight-запроса сервер также должен вернуть заголовок Access-Control-Allow-Origin с необходимым значением.

Если в запрос добавлен заголовок Access-Control-Request-Method, то сервер в ответе должен указать, какие HTTP-методы разрешено использовать для запроса ресурса в заголовке ответа Access-Control-Allow-Methods.

Если в запрос добавлен заголовок Access-Control-Request-Headers, то сервер в ответе должен указать, какие HTTP-заголовки разрешено использовать для запроса ресурса в заголовке ответа Access-Control-Allow-Headers.

Пример ответа на preflight-запрос:

HTTP/1.0 200 OK
Date: Thu, 29 Jul 2021 19:20:01 GMT
Connection: close
Server: gunicorn/19.9.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: DELETE, GET, POST
Access-Control-Allow-Headers: X-Custom-Header, Authorization

Браузер получает ответ и после этого сверяет значения Origin, разрешенных заголовков и методов. Если всё совпадает, отправляет оригинальный запрос на сервер. Если разрешённые параметры не совпадают с фактическими, браузер блокирует отправку оригинального запроса и сообщает об ошибке.

Читайте также:  Как установить Вордпресс на свой сайт — Журнал «Код»

Иногда необходимо уметь передавать Cookies при обращении к другим доменам. Заголовок Cookie не относится к списку разрешенных и попадает под политику безопасности. Чтобы их можно было передавать, сервер в ответ на preflight и на оригинальный запрос должен возвращать заголовок Access-Control-Allow-Credentials: true. Для работы куки также нужно возвращать в заголовке Access-Control-Allow-Origin конкретное значение разрешённого хоста.

Ответ от кроссдоменного запроса получен. Допустим, нужно получить доступ к заголовкам в коде JavaScript в браузере и прочитать их значения. Сделать это не так просто, потому что по умолчанию доступ из Java Script для кроссдоменных запросов есть только к следующим заголовкам:

Если JS попытается прочитать значение другого заголовка, то получит null. Но сервер в ответе на запрос может перечислить заголовки, к которым можно получить доступ из Javascript в заголовке Access-Control-Expose-Headers. Заголовки указываются через запятую. Например, Access-Control-Expose-Headers: Authorization, X-Version.

Заголовок ответа сервера Access-Control-Max-Age сообщает браузеру, насколько предзапрос может быть кэширован и опущен при запросах к серверу. Значение указывается в секундах. Если после первого выполнения preflight-запроса время жизни Max-Age не вышло, то повторной отправки не будет. Оригинальный запрос выполнится сразу.

Про Cookies и CORS на этом — всё. В третьей статье цикла я расскажу о нововведениях в версии HTTP/1.1 и чем она отличается от HTTP/2.

Полезные ссылки

Следующая статья: Ультимативный гайд по HTTP. H TTP/1.1 vs HTTP/2


Виды cookies

HTTP является протоколом без статических данных, что означает, что он не может различать два последовательных запроса, исходящих от одного и того же компьютера, сети или пользователя. Это было основной проблемой. Из-за этого пользователь не мог поддерживать свою сессию, и если бы мы продолжили в том же духе, интернет стал бы таким же, каким он был десять лет назад, состоящим только из кучи статичных html-страниц. Никаких учетных записей пользователей, никакой настройки и т.д., а если и есть какие-то учетные записи, то для доступа к каждой странице нужно снова и снова входить в систему.

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

Примером может служить PHPSESSID: xyjaez1081lze23, lang: en.

Давайте разберемся в этом на примере. Предположим, вы пошли в магазин и принесли оттуда посуду. Придя домой, вы обнаруживаете, что один из них сломан. Тогда вы идете к владельцу магазина и рассказываете ему о своей проблеме. Но, к вашему ужасу, он отвечает, что не знает вас. Таково было исходное состояние HTTP без файлов cookie. Веб-сервер не узнает вас при любом раскладе.


Виды cookies

Теперь рассмотрим другой сценарий. Владелец магазина дает вам чек. На чеке есть номер. Этот номер уникален и может быть использован для вашего опознания. У него также есть копия номера, хранящаяся в его компьютере. Когда вы возвращаетесь в магазин, он просит вас предъявить чек. Он сверяет номер с номером на своем компьютере. После этого он узнает вас. Это именно то, что делает cookies, и ничем не отличается от чека, используемого для вашего запоминания.

Они также могут использоваться по различным причинам. Например:

Какие различные флаги используются в файле Cookie?

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


Виды cookies

Давайте вкратце рассмотрим все флаги.

Что такое атрибут domain и как он используется в Cookie?

Теперь давайте подробнее рассмотрим атрибут domain в cookie. Как следует из названия, он используется для хранения имени домена и поддомена. Оно может использоваться браузерами для определения того, на какой домен/поддомен нужно отправить cookie, а от какого следует воздержаться.

Также можно считать, что это определяет область применения cookie. Веб-приложение может иметь несколько субдоменов, и каждый субдомен может установить свой собственный файл cookie.

Предположим, что сайт www.example.com имеет 4 поддомена, и на каждом поддомене работает свой сайт на разных фреймворках. Они устанавливают свои собственные файлы cookie.

Приведенная ниже таблица хорошо это объясняет.


Виды cookies

Cookies для соответствующих субдоменов

Так, если вы посетите сайт www.example.com, веб-приложение передаст вам PHPSESSID: wwwexample1 в виде cookie. Он будет сохранен вашим браузером, и когда вы отправите запрос обратно на www.example.com, ваш браузер отправит точно такой же файл cookie на веб-сервер. По сути, он определил атрибут домена в cookie, и если вы посещаете тот же домен, который указан в cookie, cookie будет включен в запрос.

Если вы посетите сайт sub1.example.com, веб-приложение установит, например, JSPSESSID: sub1.example2 в качестве файла cookie. Хотя домены одинаковые, то есть example.com, но субдомены разные. Таким образом, если вы отправляете запрос на сайт sub1.example.com, ваш браузер отправит JSPSESSID:sub1example2 в качестве cookie на веб-сервер.

Same Site Cookie


Виды cookies

Это новый атрибут, который сейчас используется современными браузерами.

Давайте сначала разберемся, что такое first party и third-party cookies:

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

Таким образом, атрибут «same site» устраняет пару уязвимостей, использующих атрибут domain в cookie (если запрос отправляется на домен, указанный в cookie, то cookie автоматически включается), таких как CSRF.

Так, если пользователь перенаправляется с сайта abc.com на сайт bcd.com, а в браузере есть cookie с доменом bcd.com, он будет автоматически включен в запрос перенаправления. Но если установлен атрибут cookie того же сайта, cookie не будет включен в запрос перенаправления.

В атрибуте same site есть два флага.


Виды cookies

Если установлен атрибут strict, то даже когда пользователь переходит по обычной ссылке, опция strict запрещает браузеру передавать cookie на целевой сайт.

Значение lax является хорошим балансом между безопасностью и удобством использования для сайтов, которые хотят, чтобы пользователи оставались в системе после перехода по внешней ссылке. Таким образом, если пользователь переходит по обычной ссылке, cookie будет включен в запрос.

Файлы cookie внесли значительный вклад в обеспечение прозрачности веб-сайтов, но они также увеличивают площадь атаки. Они могут использоваться противниками для получения контроля над привилегированными функциями, выполнения SQL-инъекций, перехвата сессий и захвата учетных записей. Конечно, все это в значительной степени зависит от типа приложения и функциональности, предоставляемой веб-приложением, и его зависимости от файлов cookie. Бывали случаи, когда злоумышленникам удавалось получить доступ к скрытым функциям, доступным только администраторам, просто подменив значения в cookies.

Как разработчик вы должны проверить, какие функциональные возможности предоставляет веб-приложение и как файлы cookie интегрированы с веб-приложением. Cookies, особенно сессионные, должны быть трудноуловимыми, а соответствующие флаги/атрибуты должны быть установлены в соответствии с вашими потребностями.

Оригинал статьи — здесь. Поддержите автора хлопками на Medium.

Оцените статью
Хостинги