Cookies, session storage, локальное хранилище

Cookies, Session Storage, Локальное хранилище

Введение

Браузер умеет хранить данные на стороне клиента. Это нужно для сессий, предпочтений пользователя, кэширования данных и многого другого. Тестировщику важно знать три основных типа хранилища: cookies, sessionStorage и localStorage — и уметь работать с ними через DevTools.

Три типа хранилища браузера

ХарактеристикаCookiesSession StorageLocal Storage
Время жизниДо истечения Expires или вручнуюДо закрытия вкладкиПока не очищено вручную
Отправляется на серверДа, с каждым запросомНетНет
Объём~4 KB~5-10 MB~5-10 MB
Доступ через JSДа (если не HttpOnly)ДаДа
Область видимостиDomain + PathТолько текущая вкладкаВесь origin

Cookies (Куки)

Куки — небольшие пары ключ-значение, которые браузер автоматически отправляет на сервер с каждым запросом.

Для чего используются:

  • Хранение сессионного токена (авторизация)
  • Запоминание настроек (язык, тема)
  • Отслеживание пользователей (аналитика)

Атрибуты cookie

АтрибутОписаниеВлияние на безопасность
HttpOnlyJS не может прочитать cookieЗащищает от XSS — скрипт не украдёт токен
SecureCookie отправляется только по HTTPSЗащищает от перехвата
SameSite=StrictCookie не отправляется с других сайтовЗащищает от CSRF
SameSite=LaxCookie отправляется при навигации с других сайтовБаланс безопасности
ExpiresДата истеченияПосле этой даты cookie удаляется
DomainДомен, для которого действует cookieПоддомены могут видеть cookie

Session Storage

sessionStorage хранит данные только пока открыта вкладка. При закрытии вкладки данные удаляются.

Для чего используется:

  • Временные данные текущей сессии
  • Данные многошаговой формы (wizard)
  • Состояние, которое не нужно сохранять

Важно: данные не передаются между вкладками одного сайта.

Local Storage

localStorage хранит данные без ограничений по времени (пока пользователь не очистит вручную или сайт не удалит их программно).

Для чего используется:

  • Настройки интерфейса (тема, язык, размер шрифта)
  • Кэшированные данные
  • Данные корзины покупок (для неавторизованных пользователей)

Как проверять хранилище в DevTools

Открой DevTools → вкладка Application (Chrome) или Storage (Firefox):

Application
├── Cookies         ← все cookies для текущего сайта
├── Session Storage ← данные sessionStorage
└── Local Storage   ← данные localStorage

Там можно:

  • Просмотреть все ключи и значения
  • Удалить отдельные записи
  • Изменить значение прямо в DevTools
  • Нажать "Clear All" для полной очистки

Тестирование хранилища

Сценарии для cookies

СценарийОжидаемый результат
Удалить session-cookieПользователь разлогинивается
Изменить значение токенаСервер отвергает невалидный токен (401)
Очистить все cookiesСессия сбрасывается, настройки теряются
Проверить Secure-флагCookie присутствует только при HTTPS
Проверить HttpOnly-флагCookie не видна через document.cookie в консоли

Сценарии для localStorage

СценарийОжидаемый результат
Удалить localStorageПредпочтения сбрасываются на дефолтные
Изменить значениеИнтерфейс реагирует на изменение?
Открыть в другой вкладкеДанные видны в другой вкладке того же сайта
Открыть в incognitoДанные из обычного режима недоступны

Частые баги, связанные с хранилищем

  • Токен в localStorage вместо HttpOnly cookie → уязвимость к XSS-атаке
  • Выход из аккаунта не очищает cookie → следующий пользователь этого браузера остаётся авторизованным
  • Настройки не сохраняются → данные записываются в sessionStorage вместо localStorage
  • Ошибка при полном localStorage → браузер выбросит exception при попытке записи

Частые ошибки понимания

  • ❌ "Cookie и localStorage — одно и то же" → cookie отправляются на сервер автоматически, localStorage — нет
  • ❌ "Если закрыть браузер, всё удалится" → localStorage и cookie с Expires сохраняются после перезапуска
  • ❌ "HttpOnly cookie безопасна полностью" → защищает от XSS, но не от CSRF

Что мы запомним

  • Три типа хранилища: cookies (отправляются на сервер), sessionStorage (только вкладка), localStorage (постоянное)
  • Cookie-атрибуты HttpOnly, Secure и SameSite критичны для безопасности
  • DevTools → Application — главное место для инспекции хранилища
  • Тестируй сценарии очистки: разлогин при удалении cookie, сброс настроек при очистке localStorage
  • Храни токены авторизации в HttpOnly cookies, а не в localStorage

Попробуйте интерактивную версию

Практические задачи, квизы и AI-наставник — бесплатный старт без карты

Перейти к практике