Какие флаги cookie и зачем используют для сессионного идентификатора?
- Как защитить 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
Подробно
Три флага закрывают три разных вектора, и путать их не стоит. 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?
Разбор темы
- HTTP, cookies и сессии
Семантика HTTP-методов и кэширование, cookies и их флаги безопасности, stateful против stateless сессий, HTTPS и граница authn/authz.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.