Что такое файлы cookie HTTP?

Что такое файлы cookie HTTP Изучение

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

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

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

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

Управление сеансом:

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

Примеры: логины, автоматически заполняемые поля форм, списки покупок.

Персонализация пользователя:

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

Примеры: пользовательские настройки, темы, язык.

Отслеживание:

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

Пример: отслеживание рекламы

Как создать HTTP cookies

Есть два способа создать куки HTTP. Независимо от того, используете ли вы Google Chrome или Mozilla Firefox, вы можете ввести код Javascript, чтобы установить файл cookie в консоль любого браузера, к которому вы обращаетесь. Другой вариант предполагает, что веб-сервер отправляет один или несколько заголовков set-cookie.

1. На стороне клиента

После открытия консоли вы можете установить cookie с помощью JavaScript, набрав код:

document.cookie=»example=1″

Чтобы проверить, настроен ли ваш файл cookie, откройте вкладку «Приложение» и щелкните вкладку «Файлы cookie», чтобы получить доступ к новому файлу cookie. Вот изображение, чтобы показать, что вы должны увидеть:

2. На стороне веб-сервера

В случае, если вы хотите создать свой собственный веб-сайт, вы можете создать сценарий HTML, в котором кнопка создает файл cookie.

<<!DOCTYPE html>
<html lang=»en»>
<head>
    <meta charset=»UTF-8″>
    <meta name=»viewport» content=»width=device-width, initial-scale=1.0″>
    <meta http-equiv=»X-UA-compatible» content =»ie=edge»>
    <title>Document</title>
</head>
<body>
    <button id = ‘btnCreateCookie’>Create Cookie </button>
    <script>
      const btnCreateCookie = document.getElementbyID(«btnCreateCookie»)
      btnCreateCookie.addEventLister(«click», e=> document.cookie = «example-3»)
    </script>
</body>
</html>

Когда у вас будет готов HTML-файл, вы можете создать приложение index.js, которое будет возвращать HTML-файл с помощью приложения Express для Node.js.

const app = require(«express»)()
app.get(«/», (req, res) => {
    res.sendFile(`${__dirname}/index.html`)
})
app.listen(8080, ()=>console.log(«listening on port8080»))

Вы заметите, что каждый раз, когда вы нажимаете кнопку на своем веб-сайте, вы будете создавать файл cookie с именем «пример-3».

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

const app = require(«express»)()
app.get(«/», (req, res) => {
    res.setHeader(«set-cookie», [«setfromserver=1»])
    res.sendFile(`${__dirname}/index.html`)
})
app.listen(8080, ()=>console.log(«listening on port8080»))

Если браузер установил cookie, вам не придется вручную вводить JavaScript, чтобы создать cookie для каждого посетителя.

Независимо от типа файла cookie, свойства cookie остаются неизменными для всех типов файлов cookie. К свойствам файлов cookie, на которые следует обратить внимание, относятся:

Объем файла cookie определяет, на какие URL-адреса следует отправлять файлы cookie. Объем файла cookie делится на два разных атрибута:

  • Домен

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

Вот пример:

Domain=example.io установит, что файлы cookie будут доступны для всех поддоменов, таких как developer.example.io

  • Path

Атрибут path указывает конкретный URL-путь для отправки заголовка cookie. Чтобы установить файлы cookie для разных путей, вы можете написать код:

document.cookie="examplepath1=1; path=/path"

document.cookie="examplepath2=2; path=/blog"

Теперь, когда вы входите на веб-сайт через любой URL-адрес /path, например https://bestprogrammer.ru/path/, вы отправляете заголовок cookie «bestprogrammerpath1=1».

В качестве другого примера, если вы должны были войти на веб-сайт через любой URL-адрес /blog, например https://www.example.io/blog

Вы отправите заголовок cookie «educativepath2=2».

Другие запрошенные пути, такие как:

/bloglearn

/pathlearn

/learnpath

не будет отправлять заголовок cookie, если для этих URL-адресов не настроен атрибут пути.

2. Expires and Max-age

Еще одно свойство, которое следует учитывать, — это время жизни файла cookie или, проще говоря, срок его действия. ExpiresИ Max-Ageатрибуты попадают под постоянной печеньем категории. Несмотря на название «постоянный файл cookie», Expiresатрибут удалит файл cookie в указанную дату. Напротив, Max-Ageатрибут удалит cookie через определенный период времени.

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

3. SameSite

Ранее мы рассмотрели, как файлы cookie HTTP устанавливаются для прямых URL-адресов, но как насчет того, чтобы щелкнуть ссылку в этом прямом URL-адресе? При нажатии на ссылку на странице ваши файлы cookie могут быть отправлены с новой страницы, на которую вы перенаправлены. Здесь SameSiteв игру вступает атрибут. Проще говоря, Samesiteуказывает, отправляются ли файлы cookie с межсайтовыми запросами или всякий раз, когда вы нажимаете ссылку на любой заданной странице. Например, давайте проследим эту последовательность того, как файлы cookie отправляются и принимаются при переходе с одной веб-страницы на другую.

  • Вы вводите URL-адрес example.com
  • Вы получите собственный файл cookie
  • На example.comвы нажимаете ссылку или кнопку, которая отправляет запрос Fetch на www.cookie.com.
  • cookie.comустанавливает cookie с доменом = cookie.com
  • example.comтеперь содержит сторонний файл cookie с www.cookie.com.

А SameSiteатрибут определяет, является ли сторонние файлы посылаются с тремя значениями:

  • Strict

При SameSite значении strictcookie файлы cookie будут отправляться только через контекст основных файлов cookie, а не через сторонние файлы cookie.

  • Lax

При SameSite значении laxcookie файлы cookie будут отправляться только в том случае, если пользователи активно переходят по ссылке на сторонний веб-сайт. Если SameSiteатрибут не установлен напрямую, laxстановится значением по умолчанию.

  • None

При SameSite значении Nonecookie будут отправляться во всех контекстах.

Session cookies

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

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

First-Party cookies

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

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

Third-Party cookies

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

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

Secure cookies

Безопасные файлы cookie не позволяют неавторизованным сторонам наблюдать файлы cookie, отправленные новому пользователю в ответе HTTP. С атрибутом Secure HTTP-запросы будут включать cookie только в том случае, если они передаются по безопасному каналу.

Файлы cookie HttpOnly Изначально реализованные разработчиками Microsoft Internet Explorer в 2002 году, флаги HttpOnly могут быть включены в Set-Cookieзаголовок HTTP. Атрибут HttpOnly снижает риск случайного доступа пользователей к ссылке, которая может использовать ошибку межсайтового скриптинга.

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

Zombie cookies

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

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

Подведение итогов

Поздравляем, вы сделали первые шаги с использованием файлов cookie HTTP! Файлы cookie HTTP существуют уже давно и содержат много возможностей для улучшения взаимодействия с пользователем и аутентификации.

Несмотря на то, что мы рассмотрели основы файлов cookie HTTP, еще многое предстоит узнать о безопасности файлов cookie HTTP, например:

  • Заголовки безопасности HTTP
  • X XSS защита
  • Тестирование заголовков безопасности
Читайте также:  Внедрение GitOps для доставки нативных облачных приложений
Оцените статью
bestprogrammer.ru
Добавить комментарий