Флаги cookie: назначение и защита HttpOnly: блокирует доступ к cookie из JS и снижает риск XSS-атак Secure: разрешает отправку cookie только по HTTPS и защищает их от перехвата SameSite: ограничивает передачу cookie между сайтами и помогает уменьшить риск CSRF доступные значения: Strict, Lax, None Path: определяет, для каких URL доступна cookie Domain: указывает, каким субдоменам разрешён доступ к cookie Expires/Max-Age: задаёт период действия cookie, по завершении которого она удаляется Priority (используется редко): определяет приоритет cookie при хранении браузером
Какие флаги cookie нужно знать на собеседовании и за что они отвечают?
Флаги cookie: назначение и защита HttpOnly: блокирует доступ к cookie из JS и снижает риск XSS-атак Secure: разрешает отправку cookie только по HTTPS и защищает их от перехвата SameSite: ограничивает передачу cookie…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Флаги cookie: назначение и защита
- HttpOnly: блокирует доступ к cookie из JS и снижает риск XSS-атак
- Secure: разрешает отправку cookie только по HTTPS и защищает их от перехвата
- SameSite: ограничивает передачу cookie между сайтами и помогает уменьшить риск CSRF
- доступные значения: Strict, Lax, None
- Path: определяет, для каких URL доступна cookie
- Domain: указывает, каким субдоменам разрешён доступ к cookie
- Expires/Max-Age: задаёт период действия cookie, по завершении которого она удаляется
- Priority (используется редко): определяет приоритет cookie при хранении браузером
В совокупности эти флаги управляют безопасностью и областью действия cookie, помогая снизить вероятность атак и утечки данных.
Развёрнутый ответ
Краткий ответ
HTTP cookies поддерживают несколько значимых флагов, определяющих их безопасность, область действия и правила поведения. К основным относятся HttpOnly, Secure и SameSite. С их помощью можно защитить куки от XSS и CSRF, а также задать условия, при которых браузер отправляет их серверу.
Основные особенности
- HttpOnly — делает куки недоступным для JavaScript на клиенте, в том числе через
document.cookie. Это уменьшает вероятность кражи куки при XSS-атаке. Чаще всего такой флаг устанавливают для сессионных токенов. - Secure — разрешает передачу куки только через защищённое HTTPS-соединение и тем самым препятствует её перехвату в незашифрованном трафике.
- SameSite — определяет, отправляется ли куки в запросах между разными доменами. Флаг поддерживает следующие значения:
- Strict — куки не передаются при переходе пользователя с внешнего сайта. Это обеспечивает максимальную защиту от CSRF, но способно ухудшить UX,
- Lax — компромиссный режим: куки отправляется при "безопасных" переходах, например во время навигации с GET-запросом,
- None — куки передаётся всегда, однако для этого необходимо включить Secure.
- Path — определяет путь на сервере, в пределах которого действует куки. Например,
/appбудет применяться только к URL внутри/app. - Domain — задаёт домен, к которому относится куки; если параметр не указан, используется домен, установивший куки.
- Expires / Max-Age — задаёт продолжительность жизни куки:
Expiresсодержит дату окончания действия, аMax-Age— срок в секундах. Если эти параметры отсутствуют, куки считается сессионным и удаляется после закрытия браузера.
Применение на практике
В системах, где требования к безопасности особенно высоки, например в финтехе и административных панелях, для сессионных куков обязательно используют HttpOnly+Secure+SameSite=Strict. На публичных сайтах часто выбирают SameSite=Lax, чтобы сохранить удобство авторизации и одновременно снизить риск CSRF. В новых спецификациях браузеров Account Service рекомендует всегда включать SameSite для более точного контроля.