Что такое Cookies в контексте веб-тестирования?

Ответ

Cookies (куки) — это небольшие фрагменты данных (до ~4 КБ), которые сервер отправляет браузеру пользователя и которые браузер автоматически возвращает при последующих запросах к тому же домену. Это механизм хранения состояния (state) на стороне клиента.

Основные атрибуты и их значение для тестирования:

  • Name и Value: Данные, хранимые в cookie.
  • Expires / Max-Age: Срок жизни. Куки без этих атрибутов — сессионные (удаляются при закрытии браузера).
  • Secure: Куки передаются только по HTTPS. Обязательно для проверки в защищенных приложениях.
  • HttpOnly: Запрещает доступ к кукам через JavaScript (document.cookie). Защита от XSS-атак.
  • SameSite: Контролирует отправку кук с межсайтовыми запросами. Значения: Strict, Lax, None.

Пример HTTP-заголовка:

Set-Cookie: session_id=abc123def456; Expires=Wed, 21 Oct 2025 07:28:00 GMT; Secure; HttpOnly; SameSite=Lax

Что нужно проверять QA:

  1. Корректность установки и отправки кук (инструменты: DevTools → Application/Storage).
  2. Соблюдение политик безопасности (Secure, HttpOnly, SameSite).
  3. Влияние на функциональность: поведение при очистке кук, истечении срока действия, отключении в браузере.
  4. Отличие от Web Storage: LocalStorage/SessionStorage не отправляются на сервер автоматически, имеют больший лимит (~5 МБ) и API, доступный только на клиенте.

Ответ 18+ 🔞

Слушай, а вот эти ваши куки — это ж, блядь, такие мелкие бумажки, которые сервер тебе в браузер суёт, а ты их потом, как послушный пёс, обратно тащишь при каждом чихе. Ну, типа, чтобы сервер тебя узнал, а не думал, что ты каждый раз новый мудак пришёл. Объём — до 4 килобайт, больше не влезет, так что не разгуляешься.

Вот на что там смотреть надо, а то нихуя не поймёшь:

  • Имя и Значение (Name/Value): Ну, сами данные, чё там. user=vasya, token=abc123 — вся эта хуйня.
  • Срок годности (Expires/Max-Age): Атрибут «съешь до». Если его нет — кука сессионная, удалится, как только браузер закроешь. Как будто её и не было, блядь.
  • Secure: Эта штука значит, что куку будут таскать только по защищённому HTTPS. Если её нет на важной куке — это пиздец и дыра, можно мимо кассы проходить.
  • HttpOnly: А это, ёпта, гениальная штука! Она говорит: «JavaScript, иди нахуй, не трогай мои куки». Защита от этих ваших XSS-атак, когда скрипт левый пытается стырить сессию. Если её нет на куке с токеном — волнение ебать, терпения ноль.
  • SameSite: Контролирует, чтобы куки не бегали на левые сайты, куда не просили. Strict — вообще никуда, Lax — только по безопасным переходам, None — похуй, везде (но тогда Secure обязателен!).

Вот как это в жизни выглядит, смотри:

Set-Cookie: auth=supersecret; Expires=Wed, 21 Oct 2025 07:28:00 GMT; Secure; HttpOnly; SameSite=Lax

Видишь? Сервер говорит: «Держи, чувак, ключ от квартиры. Но только по HTTPS, JS его не увидит, и на соседние помойки не таскай».

И что тебе, как тестировщику, делать с этим добром?

  1. Где мои куки, блядь? Открывай DevTools (F12) → Вкладка «Application» или «Storage» → «Cookies». Смотри, приходят ли они, правильные ли значения, отправляются ли обратно. Если нет — нихуя не работает.
  2. Безопасность, ёбана! На всех важных куках (сессия, токен) обязательно должны быть Secure и HttpOnly. SameSite — обычно Lax или Strict. Если нет — пиши баг, это не шутки.
  3. А что если... Почисти куки в браузере — тебя разлогинило? Жди истечения срока — сессия проёбана? Отключи куки в настройках — сайт встал колом? Вот это всё и проверяй.
  4. Не путай с другим хламом! Это не LocalStorage, блядь. LocalStorage — это твой личный сейф в браузере (до 5 МБ), сервер его сам не увидит. А куки — это как записка, которую ты каждый раз показываешь швейцару. Совсем разные вещи, ёпта!