Ответ
Атрибут SameSite управляет тем, отправляются ли cookie с кросс-сайтовыми (cross-site) запросами. Это важный механизм защиты от атак типа межсайтовой подделки запроса (CSRF) и утечки конфиденциальных данных.
Значения атрибута:
Strict: Cookie отправляются только в контексте того же сайта (точно совпадающий домен). Не отправляются при переходе по ссылке с другого сайта. Максимальная безопасность, но может нарушить UX (например, после входа по ссылке из почты пользователь окажется неавторизованным).Lax(значение по умолчанию в современных браузерах): Cookie отправляются при безопасных методах запроса (GET) и во время навигационных переходов (например, переход по ссылке). Блокирует отправку cookie в кросс-сайтовых POST-запросах, что предотвращает большинство CSRF-атак.None: Cookie отправляются при любых кросс-сайтовых запросах. Обязательно требует установки флагаSecure(передача только по HTTPS). Используется для функциональности, требующей кросс-доменного взаимодействия (например, виджеты, аутентификация в iframe).
Пример установки в Node.js с Express:
// Установка сессионной куки с SameSite=Lax
res.cookie('sessionId', 'abc123', {
httpOnly: true, // Защита от доступа через JavaScript (XSS)
secure: process.env.NODE_ENV === 'production', // Только по HTTPS в продакшене
sameSite: 'lax', // Баланс безопасности и удобства
maxAge: 24 * 60 * 60 * 1000 // Срок жизни 1 день
}); Ответ 18+ 🔞
Да ты посмотри, какая хитрая жопа эти куки придумала! Ну сидят они в браузере, тихие такие, а потом — бац! — и лезут куда не надо, на левые сайты, всю твою сессию проёбывают. Это ж пиздопроебибна ситуация, когда какой-нибудь полупидор со стороннего ресурса запрос от твоего имени слать начинает. Так вот, чтобы этого не было, и впендюрили атрибут SameSite.
Короче, на что он влияет:
Strict: Самый строгий режим. Кука — как собака на цепи: никуда со своего двора (домена) не убежит. Даже если ты по ссылке с почты перешёл, она не отправится. Безопасность — овердохуища, но пользователь может охуеть, когда его после такого перехода разлогинит. Эдакий принцип «доверия ебать ноль».Lax(сейчас по умолчанию везде): Умный компромисс. Кука не будет соваться в чужие POST-запросы (основной вектор для CSRF-атак), но при этом если пользователь просто по ссылке перешёл (GET-запрос), она отправится. Почти всю хуйню отсекает, и люди не орут.None: Полный распиздяйский режим. «Лети, кука, лети!» — отправляется вообще везде. Но за такое вольнодумство обязательно нужен флагSecure, то есть только по HTTPS. Без него браузер тебе просто хуй с горы покажет и куку проигнорит. Нужно это редко, для каких-нибудь виджетов, встроенных в другие сайты.
Вот как это в коде выглядит, чтоб ты не бздел:
// Ставим сессионную куку с умными настройками
res.cookie('sessionId', 'abc123', {
httpOnly: true, // Чтобы какой-нибудь мартышлюшка через JS её не стырил
secure: process.env.NODE_ENV === 'production', // В продакшене — только HTTPS, ясен хуй
sameSite: 'lax', // Золотая середина, чтоб и волка (CSRF) нахуй послать, и пользователя не обидеть
maxAge: 24 * 60 * 60 * 1000 // Живёт сутки
});
Вот и вся магия. Главное — не забывай про secure для SameSite=None, а то будет тебе, чувак, не хиросима, а настоящий нигерсраки в продакшене.