Harjutus 5: Küpsised

Kui klient saadab serverile HTTP päringu, luuakse serveri TCP pordiga korraks sessioon, mis on kahesuunaline sidekanal, kuid HTTP on tehtud nii, et esmalt saadab klient päringu ja siis server vastab sellele ning katkestab kohe ühenduse ära. Kui klient soovib pärast seda teha uue päringu, peab ta looma uue TCP ühenduse aga serveri poolelt on näha ainult kliendi IP aadress ja port. Aga sama IP aadressi taga võib olla mitu klienti ja klient võib oma IP aadressi vahetada (nt WiFi ühenduselt 4G peale üle minnes või vastupidi). Seega kui klient uue päringu teeb, pole serveril aimugi, kas see on see sama klient või mitte.

Когда клиент отправляет HTTP-запрос на сервер, на сервере через TCP-порт на мгновение создается сессия, которая представляет собой двунаправленный канал связи, но HTTP устроен так, что сначала клиент отправляет запрос, а затем сервер отвечает на него и сразу же прерывает соединение. Если клиент хочет после этого сделать новый запрос, он должен создать новое TCP-соединение, но со стороны сервера видны только IP-адрес и порт клиента. Однако за одним и тем же IP-адресом может скрываться несколько клиентов, и клиент может изменить свой IP-адрес (например, перейдя с WiFi-соединения на 4G или наоборот). Таким образом, когда клиент делает новый запрос, сервер не имеет представления, является ли это тот же клиент или нет.

Küpsised (ingl cookies) on väikesed nimi=väärtus paarid, mida veebiserver saab kliendile saata ning mida klient võib serverile järgneva(te) päringu(te)ga tagasi saata, kuni küpsis aegub.

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

Küpsised võimaldavad serveril eristada kliente üksteisest ja võimaldavad sisselogimisfunksionaalsust, saidi eelistuste salvestamise funktsionaalsust, ostukorvi jms, mis eeldab, et server tunneb kliendi ära.

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

Harjutus

CMD kaudu täidame käsu GET-päringu saatmiseks X.com-ile (varem Twitter.com, suunab edasi) ja vaatame vastuse pealkirja Set-Cookie.

Через CMD мы выполняем команду для отправки запроса GET на X.com (ранее Twitter.com, перенаправляет) и смотрим заголовок ответа Set-Cookie.

curl -v https://x.com
Tulemus:
< Set-Cookie: guest_id=v1%3A175757734513797560; Max-Age=34214400; Expires=Mon, 12 Oct 2026 07:55:45 GMT; Path=/; Domain=.x.com; Secure; SameSite=None
< Set-Cookie: ct0=; Max-Age=-1757577344; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Path=/; Domain=.x.com; Secure; SameSite=Lax
< Set-Cookie: __cf_bm=Mx3fQjJfAEYaW9nOdvXwn.JLwDLqxDn90v7n.QNUIJw-1757577345-1.0.1.1-ZpH2UrEkXpKnvoogPDlvPz0AMV3fr7BryphxPY.EbFS65pliqC_KtSCiQ8ORNICEPeD6cl9L6RWMcWgufb1PZYgGCqMO7_dSvhFfjqvjs8A; path=/; expires=Thu, 11-Sep-25 08:25:45 GMT; domain=.x.com; HttpOnly; Secure; SameSite=None

Set-Cookie pealkiri saadab küpsised serverist kliendile (brauserile). Ühes vastuses võib olla mitu pealkirja erinevate küpsiste jaoks. Süntaks: Set-Cookie: <nimi>=<väärtus>; [atribuutid]

Заголовок Set-Cookie отправляет файлы cookie с сервера клиенту (браузеру). В одном ответе может быть несколько заголовков для разных файлов cookie. Синтаксис: Set-Cookie: <имя>=<значение>; [атрибуты]

Peamised atribuudid ja nende tähendus:
  • <nimi>=<väärtus>: Küpsise identifikaator ja andmed (nt guest_id=v1%3A123456). Väärtus on sageli kodeeritud või hashitud jälgimiseks.
  • Expires=<kuupäev>: Küpsise aegumise kuupäev (HTTP-date formaadis, näiteks Wed, 11 Sep 2027 12:34:56 GMT). Ilma selle atribuutita on tegemist seansiküpsisega (kustutatakse brauseri sulgemisel).
  • Max-Age=<sekundid>: Kehtivusaeg sekundites (nt 63072000 = 2 aastat). On prioriteetne Expires suhtes.
  • Domain=<domeen>: Domeenid, mis võivad küpsise saada (nt .x.com hõlmab alamdomeene, nagu api.x.com). Vaikimisi on see praegune host.
  • Path=<tee>: URL-tee, kuhu küpsis saadetakse (nt / – kogu veebisait). Vaikimisi on see päringu tee.
  • Secure: Küpsised saadetakse ainult HTTPS-i (turvaline ühendus) kaudu.
  • HttpOnly: Keelab juurdepääsu JavaScripti kaudu (kaitse XSS-rünnakute eest).
  • SameSite=<väärtus>: Kontrollib ristveebipäringuid. Valikud: Strict (ilma ristveebideta), Lax (osaliselt ristveebid, standard tänapäevastes brauserites), None (kõik lubatud, nõuab Secure).
  • Partitioned: Jagatud salvestamiseks (CHIPS), isoleerib küpsised ülemise taseme saidi privaatsuse tagamiseks.
  • Priority=<väärtus>: Eksperimentaalne; määrab kustutamise prioriteedi (Low, Medium, High) salvestusruumi ülekoormuse korral.
Основные атрибуты и их значение:
  • <имя>=<значение>: Идентификатор и данные куки (например, guest_id=v1%3A123456). Значение часто закодировано или хэшировано для отслеживания.
  • Expires=<дата>: Дата истечения куки (формат HTTP-date, например, Wed, 11 Sep 2027 12:34:56 GMT). Без этого — сессионная кука (удаляется при закрытии браузера).
  • Max-Age=<секунды>: Срок действия в секундах (например, 63072000 = 2 года). Имеет приоритет над Expires.
  • Domain=<домен>: Домены, которые могут получить куку (например, .x.com включает поддомены, такие как api.x.com). По умолчанию — текущий хост.
  • Path=<путь>: Путь URL, где кука отправляется (например, / — весь сайт). По умолчанию — путь запроса.
  • Secure: Куки отправляются только по HTTPS (безопасное соединение).
  • HttpOnly: Запрещает доступ через JavaScript (защита от XSS-атак).
  • SameSite=<значение>: Контролирует кросс-сайтовые запросы. Варианты: Strict (без кросс-сайтов), Lax (частично кросс-сайтовые, стандарт в современных браузерах), None (разрешены все, требует Secure).
  • Partitioned: Для разделённого хранения (CHIPS), изолирует куки по верхнеуровневому сайту для приватности.
  • Priority=<значение>: Экспериментально; задаёт приоритет удаления (Low, Medium, High) при переполнении хранилища.
Küpsiste analüüs:
  • < Set-Cookie: guest_id=v1%3A175757734513797560; Max-Age=34214400; Expires=Mon, 12 Oct 2026 07:55:45 GMT; Path=/; Domain=.x.com; Secure; SameSite=None

Nimi: guest_id
Väärtus: v1%3A175757734513797560 (URL-kodeeritud, dekodeeritakse kui v1:175757734513797560). See on unikaalne identifikaator, mis tõenäoliselt sisaldab versiooni (v1) ja ajamärget või kasutaja hash-väärtust.
Otstarve: tõenäoliselt identifikaator, mille abil jälgitakse volitamata (külalis)kasutajaid analüüsi või sisu personaliseerimise eesmärgil.

Значение: v1%3A175757734513797560 (URL-кодировано, декодировано как v1:175757734513797560). Это уникальный идентификатор, вероятно, содержащий версию (v1) и временную метку или хеш пользователя.

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

  • < Set-Cookie: ct0=; Max-Age=-1757577344; Expires=Thu, 01 Jan 1970 00:00:01 GMT; Path=/; Domain=.x.com; Secure; SameSite=Lax

Nimi: ct0
Tähendus: Tühi (=). See näitab küpsise kustutamist (tühi väärtus + aegunud kehtivusaeg).
Otstarve: ct0 kasutatakse tavaliselt X.com-is CSRF-tokenina (kaitse veebisaitidevaheliste võltsitud päringute eest), et tagada brauseri poolt saadetavate päringute turvalisus.

X.com server kustutab küpsise ct0, tõenäoliselt seansi tühistamise,.

Значение: Пустое (=). Это означает удаление файла cookie (пустое значение + истекший срок действия).

Назначение: ct0 обычно используется в X.com в качестве токена CSRF (защита от поддельных запросов между веб-сайтами) для обеспечения безопасности запросов, отправляемых браузером.

Сервер X.com удаляет файл cookie ct0, вероятно, из-за сброса сеанса.

  • < Set-Cookie: __cf_bm=Mx3fQjJfAEYaW9nOdvXwn.JLwDLqxDn90v7n.QNUIJw-1757577345-1.0.1.1-ZpH2UrEkXpKnvoogPDlvPz0AMV3fr7BryphxPY.EbFS65pliqC_KtSCiQ8ORNICEPeD6cl9L6RWMcWgufb1PZYgGCqMO7_dSvhFfjqvjs8A; path=/; expires=Thu, 11-Sep-25 08:25:45 GMT; domain=.x.com; HttpOnly; Secure; SameSite=None

Nimi: __cf_bm
Väärtus: Mx3fQjJfAEYaW9nOdvXwn.JLwDLqxDn90v7n.QNUIJw-1757577345-1.0.1.1-ZpH2UrEkXpKnvoogPDlvPz0AMV3fr7BryphxPY. EbFS65pliqC_KtSCiQ8ORNICEPeD6cl9L6RWMcWgufb1PZYgGCqMO7_dSvhFfjqvjs8A – pikk kodeeritud token, mis sisaldab tõenäoliselt identifikaatorit, ajamärget ja hash-väärtust.
Otstarve: see küpsis on seotud Cloudflare’iga, X.comi kasutatava kaitsesüsteemi ja CDN-iga. Tavaliselt see on Bot Management küpsis, mida kasutatakse selleks, et kontrollida, kas klient on bot või päris kasutaja.

Cloudflare’i kasutatakse botide eest kaitsmiseks (nt CAPTCHA-kontroll või käitumise analüüs). Küpsis on ajutine, kuna botide kontrollimine on tavaliselt vajalik ainult lühikese aja jooksul (30 minutit).

Значение: Mx3fQjJfAEYaW9nOdvXwn.JLwDLqxDn90v7n.QNUIJw-1757577345-1.0.1.1-ZpH2UrEkXpKnvoogPDlvPz0AMV3fr7BryphxPY. EbFS65pliqC_KtSCiQ8ORNICEPeD6cl9L6RWMcWgufb1PZYgGCqMO7_dSvhFfjqvjs8A – длинный закодированный токен, который, вероятно, содержит идентификатор, временную метку и хеш-значение.

Назначение: этот файл cookie связан с Cloudflare, системой защиты, используемой X.com, и CDN. Обычно это файл cookie Bot Management, который используется для проверки, является ли клиент ботом или реальным пользователем.

Scroll to Top