- Сесийните „бисквитки“ действат като временна памет за уебсайтовете, което им позволява да проследяват състоянието на потребителя и удостоверяването му на множество страници.
- Атрибути за сигурност като HttpOnly, Secure и SameSite са от съществено значение за защита на данните от сесията от XSS, MITM и CSRF атаки.
- Съвременните закони за поверителност, като GDPR, категоризират строго необходимите бисквитки за сесия като освободени от изискванията за изрично съгласие.
Някога чудили ли сте се как един уебсайт запомня, че сте влезли в профила си или поддържа количката ви пълна, докато кликвате от един продукт към друг? Всичко се свежда до сесийни бисквитки – тези малки, но мощни данни, които преодоляват разликата между бездържавния характер на мрежата и безпроблемното изживяване, което очакваме. Без тях всяко зареждане на страница би било като среща с уебсайт за първи път, принуждавайки ви да се удостоверявате отново или да започвате навигацията си от нулата на всеки няколко секунди.
Въпреки че може да изглеждат като прости текстови файлове, сесийните бисквитки всъщност са основни компоненти на съвременната уеб архитектура . Те работят във фонов режим, управлявайки „състоянието“ на вашето посещение, като съхраняват уникален идентификатор, който сървърът разпознава. Това позволява персонализиран поток, но както ще разгледаме по-подробно, това удобство е свързано с набор от предизвикателства за сигурността, с които разработчиците трябва да се справят внимателно, за да предотвратят отвличането на потребителски самоличности от злонамерени лица.
Вътрешното функциониране на сесийните бисквитки

В основата си, сесийната „бисквитка“ е временна или непостоянна „бисквитка“ . За разлика от постоянните „бисквитки“, които имат зададена дата на валидност (определена от атрибутите Max-Age или Expires), сесийните „бисквитки“ обикновено се намират във временната памет (RAM) на браузъра. Това означава, че в стандартен сценарий те се изтриват, след като затворите прозореца на браузъра си или прекратите текущата си сесия. Струва си да се отбележи обаче, че съвременните функции на браузъра, като възстановяване на раздели или възстановяване на сесия, понякога могат да поддържат тези „бисквитки“ живи по-дълго от предвиденото.
Процесът е доста лесен: когато за първи път посетите даден сайт, сървърът генерира уникален идентификатор на сесия – обикновено дълъг, произволен низ от знаци. Този идентификатор се изпраща до вашия браузър чрез HTTP заглавка Set-Cookie. От този момент нататък вашият браузър прикачва тази бисквитка към всяка заявка, която правите към този домейн. Сървърът вижда идентификатора, търси го в собствената си база данни и казва: „А, това е Потребител А и има три артикула в количката си“, което му позволява да покаже персонализиран отговор вместо обща страница.
Защо любимите ви уеб приложения зависят от тях

Най-класическият пример за тази технология в действие е пазарската количка в електронната търговия . Ако даден сайт запази количката ви само в база данни, след като сте влезли в системата, гостите няма да могат да пазаруват. Сесийните бисквитки позволяват на сайта да проследява вашите избори в реално време. Дори и да не сте влезли в системата, бисквитката свързва текущата ви сесия на браузъра с конкретна временна количка на сървъра. Ето защо можете да разглеждате и добавяте артикули без акаунт, като данните ви са ви необходими само на последния етап на плащане.
Освен пазаруването, тези „бисквитки“ са гръбнакът на удостоверяването на потребителите . Вместо да изпраща потребителското ви име и парола с всяко кликване – което би било кошмар за сигурността – сървърът издава „бисквитка“ за сесия след успешно влизане. Този токен доказва, че вече сте били потвърдени. Те се използват и за многостранични формуляри , където въведените от вас данни на първа страница трябва да бъдат запомнени на трета страница, както и за джаджи за чат на живо , които поддържат нишката на разговора активна, докато разглеждате различни секции на сайта.
Укрепване на стените: Основни атрибути за сигурност

Тъй като сесийните бисквитки са основно ключове към потребителския акаунт, те са основни цели за хакерите. За да спрат отвличане на сесия, разработчиците използват няколко критични флага. HttpOnly Атрибутът е важен; той предотвратява достъпа на клиентски скриптове (като JavaScript) до бисквитката чрез document.cookieТова е основна защита срещу Кроссайт скриптове (XSS), където хакер се опитва да открадне вашия сесиен токен, за да се представи за вас.
След това е атрибутът Secure , който гарантира, че „бисквитката“ се предава само през криптирани HTTPS връзки. Това предотвратява атаките от типа „човек по средата“ (MITM) да „изнюхват“ „бисквитката“ от въздуха в некриптирана обществена Wi-Fi мрежа. За да се затегнат допълнително гайките, атрибутът SameSite (със стойности като Strict, Lax или None) контролира дали „бисквитките“ се изпращат с междусайтови заявки, осигурявайки надеждна защита срещу атаки от типа Cross-Site Request Forgery (CSRF).
- __Secure- префикс: Принуждава бисквитката да бъде зададена с флага „Защита“.
- __Host- префикс: Златният стандарт за сигурност; изисква флаг Secure, атрибут no Domain и Path, зададен на /, което гарантира, че бисквитката е заключена към конкретния хост, който я е създал.
- __Http- префикс: Гарантира, че „бисквитката“ е едновременно „Secure“ и „HttpOnly“.
Поверителност, право и пейзажът на GDPR

В света на законодателството за поверителност не всички „бисквитки“ се третират еднакво. Съгласно Общия регламент относно защитата на данните (GDPR ) в ЕС и Обединеното кралство, сесийните „бисквитки“, използвани за основни функции на сайта, обикновено се класифицират като строго необходими . Тъй като са необходими, за да работи сайтът действително (като например да ви поддържат влезли в системата), те често са освободени от изискването за получаване на изрично съгласие от потребителя чрез тези досадни изскачащи банери, въпреки че сайтовете все пак трябва да разкриват употребата им в политика за поверителност.
Това е далеч от „бисквитките за проследяване“ или „бисквитките“ на трети страни, които ви следват в различни уебсайтове, за да изградят профил на вашите навици. Докато „бисквитките за сесия“ са от първа страна и временни, „бисквитките за проследяване“ често са постоянни и натрапчиви. Това разграничение е причината много браузъри сега да блокират „бисквитките“ на трети страни по подразбиране, като същевременно позволяват „бисквитките за сесия“, които правят мрежата използваема.
Алтернативи и технически ограничения
„Бисквитките“ не са без недостатъци. Те имат ограничение на размера (обикновено около 4KB ) и могат да забавят производителността, защото се изпращат с всяка отделна заявка. За съхраняване на по-големи количества данни от страна на клиента, разработчиците вече предпочитат Web Storage API (localStorage и sessionStorage) или IndexedDB, които не се изпращат автоматично към сървъра. За удостоверяване някои приложения използват JSON Web Tokens (JWT) , които са самостоятелни и не изискват непременно хранилище за сесии от страна на сървъра.
Съществуват и други методи, като например URL заявки (добавяне на идентификатора на сесията към връзката) или скрити полета на формулярите, но те са до голяма степен остарели и рискови. Те разкриват идентификатора на сесията в адресната лента, което ги прави уязвими за фиксиране на сесията и регистриране на препращащите потребители. Съвременните стандарти за сигурност категорично предпочитат използването на криптирани „бисквитки“ тип „HttpOnly“ за управление на активните потребителски сесии.
Управлението на баланса между удобството за потребителя и защитата на данните изисква задълбочено разбиране на това как се държат тези временни токени. Чрез внедряване на строги префикси за сигурност, използване на криптирани канали и спазване на рамките за поверителност, разработчиците могат да гарантират, че „паметта“ на уебсайта остава полезен инструмент, а не задължение за сигурността на крайния потребител.