HTTP Cookies: Компромис между удобство и сигурност
Последен ъпдейт на 16 януари 2021 в 15:55 ч.
Така наречените “бисквитки” (HTTP cookies) са съществена част от Интернет, такъв какъвто го познаваме днес. Те позволяват на уеб страниците да ви „помнят“ като потребител: какво имате в пазарската си количка, какви страници посещавате, какви теми ви интересуват и т.н. Всичко това обаче ги прави ценен източник на лична информация, от който недоброжелатели могат да се възползват.
Какво точно са бисквитките и къде се съхраняват
HTTP бисквитките представляват текстови файлове, съдържащи информация за потребителско име и парола. Те се използват за идентифициране на компютъра ви в мрежата. Маркират се с уникално ID, отнасящо се точно за вас. Изпращат се от сървъра, където е разположен достъпвания от вас сайт, до компютъра ви. Когато компютър и сървър си обменят бисквитка, сървърът прочита съдържащото се в нея ID и вече ви „познава”.
HTTP бисквитките се създават, когато посетите даден сайт за първи път. Те пазят информация за сесиите ви – времето, прекарано в сайта.
Форматът на бисквитката представлява двойка “поле-стойност”. Уеб сървърът, изпраща кратък поток от идентификационни данни към браузъра ви, които той да запази. Тук възниква въпросът – къде се пазят тези бисквитки? Отговорът е – локално в браузъра, тъй като е нужно той да помни двойката “поле-стойност”, която ви идентифицира като потребител. По този начин, когато отново посетите същия сайт, браузърът ви ще изпрати запазената бисквитка към уеб сървъра му, който пък ще възстанови данните от предходните ви сесии.
За да си представите по-лесно процеса по генериране и използване на бисквитки, можем да го сравним с използването на гардероб в театър:
- Предавате палтото си на гардеробиера – това е еквивалентно на момента, в който за първи път се свързвате с уеб сървъра на посещавания сайт. Създава се запис за тази връзка, който може да включва информация за личния ви акаунт, кои категории сте посетили, какво сте пазарували от сайта и др.
- Получавате номерче, което ви идентифицира като собственик на точно това палто – именно това е бисквитката за дадения уеб сайт, която се съхранява в браузъра. Тя притежава уникално ID за всеки потребител.
- Ако решите да си вземете палтото, за да излезете по време на антракта, и после пак да го върнете, използвате същото номерче – така е и когато посетите уеб сайт отново – браузърът му предоставя запазената бисквитка (ако не сте я изчистили). Сървърът прочита ID-то в нея и свързва данните за активността ви от предходни посещения в този сайт.
Да позволите или да забраните бисквитките
Безспорно бисквитките улесняват сърфирането в интернет, но от друга страна представляват риск за конфиденциалността на данните и браузър историята ви като потребител.
Бисквитките не могат да заразят компютъра ви с вируси. Недоброжелатели обаче могат да ги “откраднат” и да си осигурят достъп до браузър сесиите, които съдържат информация за вас.
Забраната на всички бисквитки на браузъра може да затрудни навигацията в някои уебсайтове. Все пак можете да зададете настройки, които контролират или ограничават бисквитки на трети страни и проследяване. Така ще защитите поверителността ви, докато пазарувате или сърфирате онлайн.
Бисквитките се настройват по различен начин във всеки баузър, но логиката е сходна – обикновено се намират в менюто Настройки -> Поверителност и сигурност. Напр. в Google Chrome: От менюто навигирайте до Settings -> Privacy and security -> Cookies and other data -> See all cookies and site data.
Как бисквитките помагат на вас и на собствениците на сайтове
Благодарение на бисквитките, уеб сайтовете ви „разпознават“ и ви представят релевантна информация, съобразно предпочитанията ви – напр. спортни новини, вместо политически. Показването на персонализирани реклами става именно заради бисквитките – на база разглежданите до момента от вас продукти, се подбират свързани реклами и материали, които да ви се визуализират.
Онлайн магазините използват бисквитките, за да следят продуктите, които сте разглеждали, и да ви предлагат сходни. Бисквитките са тези, които помагат покупките в количката ви да се запазят, дори ако неволно затворите уеб страницата. Не може да отречете, че всичко това ви улеснява като потребител!
Колко дълго се съхраняват бисквитките
Съществуват два типа бисквитки: сесийни и постоянни (persistent). Сесийните се използват за навигация в сайтовете – например за работата на бутона „назад“. Те се пазят в RAM паметта и след като приключите сесията, се изтриват автоматично. За разлика от тях, постоянните бисквитки се пазят за неопределено време, освен ако изрично не е зададен срок за съхранение. Точно те се използват за автентикирането ви като потребител (следят дали сте логнат и с какво име) и пазят информация за повторните ви посещения.
Под ваш контрол ли е генерирането на бисквитки
First-party бисквитките се създават директно от уеб сървъра на сайта, който използвате в момента. Като цяло са безопасни, стига самият уеб сайт да е безопасен и да не е бил компрометиран.
Бисквитките на трети страни (third-party) изискват по-голямо внимание, защото те се създават от сайтове, различни от този, на който се намирате в момента – те обикновено са свързани с рекламите, които се визуализират на сайта. Посещението на страница с десет появяващи се реклами може да генерира десет различни бисквитки, дори и да не кликате върху рекламите. Този тип бисквитки позволяват на рекламните компании да следят историята от сърфирането ви из цялото интернет пространство, стига да посещавате страници с техни реклами.
Можете да повишите нивото на сигурност на бисквитките
Бисквитките, респективно потребителските данни, които се съхраняват в тях, могат да бъдат една идея по-защитени чрез допълнителни флагове и атрибути.
Пример за такъв е Secure флагът. Бисквитка с този флаг може да бъде транспортирана единствено по криптиран канал, или с други думи не може да бъде предавана по HTTP, а само по HTTPS. По този начин, дори да бъде компрометирана връзката, вероятността бисквитката да бъде “открадната” е по-малка, тъй като комуникацията е криптирана.
Друг флаг, който може да бъде добавен към бисквитката, е HttpOnly. Той указва на браузъра, че точно този тип бисквитка може да бъде предоставена само на сървъра, но не и на локалните API интерфейси, което я прави неподатлива на кражба чрез cross-site scripting (XSS) атака. Все пак такава бисквитка все още може да е предмет на CSRF атаки.
Бисквитките се създават от страна на сървъра чрез HTTP хедъра Set Cookie. Примерен синтаксис е:
Expire атрибута оказва до кога ще бъде валидна тази бисквитка, т.е. кога да бъде изтрита от браузъра. Флаговете (HttpOnly, Secure) не приемат стойности, а тяхното наличие оказва, че са приложени.
Предпазването от CSRF атаки се задава с атрибута SameSite, който може да приема три стойности – Strict, Lax или None. Напр. бисквитка със зададен артибут SameSite=Strict браузърът ще изпраща в отговор на заявки, идващи от домейн, съвпадащ с таргет домейна.