Серия HTTP: файлы cookie в HTTP

HTTP Сетевой протокол HTTP3

Это 29-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления

Введение

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

Но когда я обернулся и подумал, почему эта подсказка никогда не появлялась при посещении отечественного веб-сайта? Над этим вопросом стоит задуматься, и, возможно, после прочтения этой статьи на него есть ответ.

роль куки

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

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

Вообще говоря, файлы cookie используются тремя способами:

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

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

Зачем?

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

Создать файлы cookie

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

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

Давайте сначала посмотрим на формат Set-Cookie:

Set-Cookie: <cookie-name>=<cookie-value>

Например, вот ответ на стороне сервера:

HTTP/2.0 200 OK
Content-Type: text/html
Set-Cookie: name=flydean
Set-Cookie: site=www.flydean.com

Когда браузер получит этот ответ, он установит соответствующее значение в локальные куки, и выведет эти значения в заголовок куки в последующих запросах:

GET /test.html HTTP/2.0
Host: www.flydean.com
Cookie: name=flydean; site=www.flydean.com

Класс Cookie предоставляется в netty, который специально используется для представления файлов cookie.Основные свойства файлов cookie предоставляются в этом классе, а затем с помощью:

response.headers().add(HttpHeaderNames.SET_COOKIE, ServerCookieEncoder.STRICT.encode(cookie));

для установки заголовков ответов.

время жить для печенья

Существует два типа файлов cookie HTTP, один из которых — сеансовые файлы cookie, которые удаляются после завершения сеанса.

Существует также файл cookie, который устанавливает время истечения срока действия, указав Expires или Max-Age:

Set-Cookie: id=abcdef; Expires=Thu, 31 May 2021 08:00:00 GMT;

Где Expires — это заголовок, определенный в HTTP1.0, а Max-Age — это заголовок, определенный в HTTP1.1.

Контроль разрешений для файлов cookie

HTTP предоставляет два атрибута для управления разрешениями файлов cookie: Secure и HttpOnly.

Если файлы cookie имеют атрибут Secure, файлы cookie будут отправляться на сервер только при использовании протокола HTTPS. Если используется протокол HTTP, информация о файлах cookie не будет отправлена.

И, если это в случае http, стороне сервера не разрешено устанавливать атрибут Secure для файла cookie.

Но установка атрибута Secure не означает, что файлы cookie безопасны, поскольку файлы cookie на стороне браузера могут быть получены другими способами.

Другим атрибутом является HttpOnly. Если для файлов cookie установлено значение HttpOnly, доступ к файлам cookie с помощью JavaScript запрещен. Установив HttpOnly, мы можем повысить безопасность данных клиента:

Set-Cookie: id=abcdef; Expires=Thu, 21 May 2021 08:00:00 GMT; Secure; HttpOnly

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

Где Домен представляет собой доменное имя, а Путь представляет собой путь.

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

Например, если мы установим Domain=flydean.com, то поддомен: doc.flydean.com также будет использовать этот файл cookie.

Путь используется для соответствия пути URL-адреса. Только совпадающий URL-адрес может отправлять файлы cookie.

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

SameSite имеет три возможных значения: Strict, Lax и None. Если в строгом случае, то файл cookie отправляется только на тот же сайт, который его создал. Lax похож на Strict, за исключением того, что файл cookie отправляется, когда пользователь переходит на исходный сайт файла cookie, например, посещая ссылку на внешний сайт. Ничего нельзя использовать на исходном веб-сайте и при доступе к межсайтовым ресурсам, но это необходимо делать в безопасной среде (установите атрибут «Безопасный»). Если SameSite не установлен, производительность такая же, как у Lax.

Например:

Set-Cookie: name=flydean; SameSite=Strict

сторонние файлы cookie

Мы знаем, что файлы cookie связаны с доменом. Если домен файлов cookie совпадает с доменом текущей посещаемой страницы, файлы cookie называются основными файлами cookie. Если она отличается от текущей посещаемой страницы, например, доступ к стороннему изображению, сценарию, css и т. д., сторонний сервер может отправлять собственные файлы cookie, которые называются сторонними файлами cookie. в основном используется для рекламы или отслеживания информации о поведении пользователя.

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

Суммировать

Использование файлов cookie может помочь нам сделать многое, но также обратите внимание на безопасность файлов cookie.

Эта статья была включена вФлойд Пресс.com/05-HTTP-COO…

Самая популярная интерпретация, самая глубокая галантерея, самые краткие уроки и множество трюков, о которых вы не знаете, ждут вас!

Добро пожаловать, чтобы обратить внимание на мой официальный аккаунт: «Программируйте эти вещи», разбирайтесь в технологиях, лучше поймите себя!