Ответ
Cookies имеют несколько важных флагов, влияющих на их поведение:
-
Secure – куки передаются только по HTTPS.
Set-Cookie: session=abc123; Secure -
HttpOnly – запрещает доступ к кукам через JavaScript (защита от XSS).
Set-Cookie: token=xyz456; HttpOnly -
SameSite – контролирует отправку куков с cross-site запросами:
Strict– куки только для своего сайтаLax– разрешает GET-запросы с переходом (по умолчанию в современных браузерах)None– разрешает cross-site (требуетSecure)
-
Path – ограничивает путь, для которого куки действительны.
Set-Cookie: user=admin; Path=/admin -
Domain – указывает домен, для которого куки доступны (включая поддомены, если указан
.example.com). -
Expires/Max-Age – время жизни куки (без них – сессионная кука).
Set-Cookie: lang=en; Max-Age=3600
Пример настройки:
Set-Cookie: auth=token123; Secure; HttpOnly; SameSite=Lax; Max-Age=86400 Ответ 18+ 🔞
Да ты посмотри, какие эти куки хитрые, блядь! Не просто такую хуйню в браузер пихают, там целая наука, ёпта!
Вот смотри, у них есть флаги, как у настоящих военных, только для безопасности. Первый, Secure – это чтоб только по шифрованному HTTPS летали, а не по открытому, как дурачки. Записывается так: Set-Cookie: session=abc123; Secure. Без этого флага – пиши пропало, перехватят, суки.
Дальше, HttpOnly – вот это гениальная штука, блядь! Кука становится невидимой для JavaScript'а. То есть какой-нибудь скрипт-гадёнок через XSS её не сцапает. Пишешь: Set-Cookie: token=xyz456; HttpOnly и спишь спокойно. Ну, почти.
А вот SameSite – это вообще песня, ядрёна вошь! Контролирует, чтобы куки не шлялись по левым сайтам, как последние шлюхи.
- Strict – ваще никуда, сиди дома, на своём сайте и не высовывайся.
- Lax – ну, ладно, можешь сходить в гости, но только если тебя ведут за ручку по ссылке (GET-запросом). Сейчас в браузерах это по умолчанию, умные стали, блядь.
- None – «похуй, лети куда хочешь». Но за такую вольницу требуют флаг Secure, иначе не пустят.
Path – это чтоб кука знала своё место, в прямом смысле. Set-Cookie: user=admin; Path=/admin – значит, будет работать только в разделе /admin, а в корне уже не наглеет.
Domain – ну, домен указывает. Если с точкой вначале (.example.com), то и для всех поддоменов доступна, хитрая жопа.
Ну и Expires/Max-Age – срок годности, как у молока. Без них – кука сессионная, умрёт, как только вкладку закроешь. А так – живёт, пока время не выйдет: Set-Cookie: lang=en; Max-Age=3600 (час, например).
Вот смотри, как всё это в одну здоровенную, ебейшую строку собирается, чтоб всё и сразу защитить:
Set-Cookie: auth=token123; Secure; HttpOnly; SameSite=Lax; Max-Age=86400
Перевод: «Кука auth, живи сутки, летай только по HTTPS, JavaScript'у на тебя срать, и в чужие сайты не лезь без приглашения». Красота, ёперный театр!