Что такое куки и для чего они нужны?
Что проверяют
Понимаете ли вы, как куки ходят между браузером и сервером и какие атрибуты отвечают за безопасность. Следом обычно спрашивают, где хранить токен авторизации, в куке или в localStorage, и что такое SameSite.
Как отвечать
Куки это небольшие пары «имя=значение», которые сервер ставит заголовком Set-Cookie, а браузер сам прикладывает к каждому подходящему запросу в заголовке Cookie. HTTP не хранит состояние, и куки остаются основным способом связать запросы одного пользователя: сессия, корзина, выбранный язык, аналитика. Лимит на одну куку около 4 КБ, и все они едут в каждом запросе к домену, поэтому большие данные там не держат.
Атрибуты, которые стоит назвать:
ExpiresиMax-Age: без них кука сессионная, с ними постоянная. Chrome ограничивает срок жизни 400 днями;DomainиPath: к каким адресам кука прикладывается. БезDomainона живёт только на текущем хосте, без поддоменов;Secure: только по HTTPS;HttpOnly: кука недоступна изdocument.cookie, и XSS не украдёт сессию;SameSite:Strict,LaxилиNone, основная защита от CSRF. Без атрибута Chrome считает кукуLax, аNoneработает только вместе сSecure.
Про сторонние куки: Safari и Firefox блокируют их по умолчанию, Chrome от полного отключения отказался, а для встраиваемых виджетов есть атрибут Partitioned (CHIPS). Из JavaScript с куками работают через document.cookie, который отдаёт всё одной строкой, или через асинхронный Cookie Store API.
Где спотыкаются
Называют куки «текстовыми файлами на компьютере». Как браузер их хранит, неважно, важен механизм: заголовки и автоматическая отправка.
Кладут токен в localStorage ради защиты от CSRF и открывают его любому XSS. Или наоборот, держат сессию в куке без HttpOnly и SameSite.
Считают, что сессионная кука исчезает при закрытии браузера. С включённым восстановлением вкладок браузер её сохраняет, поэтому срок сессии надо контролировать на сервере.