Что такое SameSite

Ответ

SameSite — это атрибут cookie, который определяет, будут ли куки отправляться с кросс-сайтовыми запросами. Он помогает защитить от CSRF-атак и предотвращает утечку данных.

Значения:

  • Strict — куки отправляются только в рамках текущего домена.
  • Lax (по умолчанию в современных браузерах) — куки отправляются при безопасных методах (GET) и навигации.
  • None — куки отправляются всегда (требует Secure).

Пример:

document.cookie = "session=123; SameSite=Lax; Secure";

Нюансы:

  • Для SameSite=None обязательно указывать Secure (HTTPS).
  • В старых браузерах может не поддерживаться.

Ответ 18+ 🔞

А, слушай, про эту вашу SameSite-хуяSite, ну, это ж просто пиздец как важно, а многие про неё нихуя не знают, как про свою бабушку в деревне!

Короче, представляешь: это такой сторожевой пёс для твоих куков. Сидит и решает, отправлять ли их с тобой, когда ты шастаешь по другим сайтам. Чтобы всякие пидарасы не могли украсть твою сессию и зайти в твой аккаунт, как к себе домой. Это типа защита от CSRF-атак, ну, когда тебя обманом заставляют нажать на какую-то ебучую кнопку.

Вот какие у него три режима, как у утюга:

  • Strict (Строгий) — это прям мажордом-хуяждом. Куки ни нахуй не выйдут за пределы своего родного сайта. Зашел с левого сайта — нихуя, без сессии. Надёжно, но иногда пользователи охуевают, когда их выкидывает.
  • Lax (Свободный, но не совсем) — это по умолчанию сейчас. Нормальный пацан. Разрешает взять куки с собой, если ты переходишь по обычной ссылке (GET-запросом). Но если какой-то скрипт с левого сайта пытается отправить POST-запрос — получает пизды и уходит ни с чем.
  • None (Вообще похуй) — отправляем куки всем, всегда и везде. Но, внимание, ёпта! Чтобы этим пользоваться, ты обязан сидеть на HTTPS (Secure), иначе браузер тебе просто посылает нахуй. Безопасность, мать её!

Вот тебе пример, как это в коде выглядит, чтоб не пиздел, что не видел:

document.cookie = "session=123; SameSite=Lax; Secure";

А теперь главные подводные ебалы, на которых все пиздятся:

  1. Хочешь SameSite=None? Готовь Secure! Иначе твои куки — говно, их никто не увидит. Это железное правило, блядь.
  2. Старые браузеры, как старые пердуны, могут эту хуйню не понимать и вести себя непредсказуемо. Так что тестировать надо, а не просто тыкать и молиться.

Вот и вся магия. Казалось бы, ерунда, а из-за неё половина авторизаций на межсайтовых виджетах ломается. Чих-пых тебя в сраку, не забывай про эту настройку!