Получить доступ

Какие флаги cookie и зачем используют для сессионного идентификатора?

MiddleHTTP, cookies и сессииSpring
Ещё спрашивают так:
  • Как защитить cookie сессии?
Коротко

HttpOnly — недоступна из JavaScript (кража при XSS), Secure — только по HTTPS (перехват), SameSite (Lax/Strict) — не уходит с межсайтовыми запросами (CSRF). Флага Encrypted не существует.

  • В Spring Boot: server.servlet.session.cookie.http-only, secure, same-site
  • Смена идентификатора сессии после входа — защита от фиксации
  • Ограниченный срок жизни и Path

А ещё Префикс __Host- требует Secure и запрещает Domain

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Три флага закрывают три разных вектора, и путать их не стоит. HttpOnly не предотвращает XSS, но лишает атакующего возможности украсть идентификатор сессии скриптом. Secure не даёт браузеру отправить cookie по незашифрованному каналу. SameSite в значении Lax (умолчание в современных браузерах) или Strict мешает браузеру прикладывать cookie к запросам с чужих сайтов — именно на автоматической отправке cookie и построен CSRF. Значение None требует обязательного Secure. Полезно помнить и общее следствие: раз браузер добавляет cookie сам, сессионная модель уязвима к CSRF, а токен в заголовке Authorization — нет, но зато доступен при XSS.

Что хотят услышать

  • Назначение каждого флага.
  • Настройка в Spring Boot.
  • Фиксация сессии.

Частые ошибки

  • Считать HttpOnly защитой от самого XSS.
  • Ставить SameSite=None без Secure.

Проверьте себя

Несколько верных вариантов. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓HttpOnly — cookie недоступна из JavaScript, что снижает ущерб от XSS
  • ✓Secure — cookie отправляется только по HTTPS
  • ✓SameSite — ограничивает отправку cookie при межсайтовых запросах, что мешает CSRF
  • ✗Encrypted — включает автоматическое шифрование значения cookie браузером

Что спросят дальше

  • Почему токен в заголовке не подвержен CSRF?
  • Что меняет SameSite=Lax по сравнению со Strict?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем