← Документация WAF / troubleshooting
Взаимодействие cookie SameSite с Cloudflare
Google Chrome применяет политику SameSite к файлам cookie ↗ для защиты от маркетинговых cookie-файлов, отслеживающих пользователей, и от межсайтовой подделки запросов (CSRF), которая позволяет злоумышленникам красть или изменять ваши cookie-файлы.
SameSite атрибут файла cookie имеет три разных режима:
- Строгий: Файлы cookie создаются первой стороной (посещаемым доменом). Например, файл cookie первой стороны устанавливается Cloudflare при посещении
cloudflare.com. - Lax: Файлы cookie отправляются только на apex домен (например,
example.com). Например, если кто-то (blog.example.net) разместил прямую ссылку на изображение (img.example.com/bar.png), клиент не отправляет файл cookie наimg.example.comпоскольку это не является ни first-party, ни apex контекстом. - None: Файлы cookie отправляются со всеми запросами.
SameSite настройки для Файлы cookie Cloudflare включают:
| Файл cookie Cloudflare | Настройка SameSite | HTTPS Only | Partitioned (CHIPS) |
|---|---|---|---|
__cf_bm |
SameSite=None; Secure |
Да | Нет |
cf_clearance |
SameSite=None; Secure |
Да | Да |
__cflb |
SameSite=Lax |
Нет | Нет |
Атрибут SameSite в файлах cookie session affinity
В настоящее время, чтобы настроить SameSite атрибут в файлы cookie session affinity необходимо использовать Cloudflare API (например, Create Load Balancer операцию).
Чтобы настроить значение SameSite атрибут файла cookie, добавьте samesite и secure атрибуты JSON в вашем HTTP-запросе, внутри session_affinity_attributes объект.
Доступны следующие значения для этих двух атрибутов:
samesite атрибут:
- Допустимые значения:
Auto(по умолчанию),Lax,None,Strict.
secure атрибут:
- Допустимые значения:
Auto(по умолчанию),Always,Never.
Auto значение для samesite атрибут будет вести себя следующим образом:
- Если Always Use HTTPS включена, файлы cookie session affinity будут использовать
LaxРежим SameSite. - Если Always Use HTTPS отключена, файлы cookie session affinity будут использовать
NoneРежим SameSite.
Auto значение для secure атрибут будет вести себя следующим образом:
- Если Always Use HTTPS включена, файлы cookie session affinity будут включать
Secureв атрибуте SameSite. - Если Always Use HTTPS отключена, файлы cookie session affinity не будут включать
Secureв атрибуте SameSite.
Если вы зададите samesite к None в своём API-запросе нельзя задать secure к Never.
Если вам нужен конкретный SameSite конфигурацию в файлах cookie привязки сессии, Cloudflare рекомендует указывать значения для samesite и secure отличается от Auto, вместо использования поведения по умолчанию. Таким образом, значение SameSite атрибут файла cookie не изменится из-за изменений конфигурации (а именно Always Use HTTPS).
Известные проблемы с SameSite и cf_clearance файлы cookie
Когда посетитель проходит проверка показана из-за пользовательское правило или правило IP Access, cf_clearance файл cookie устанавливается в браузере посетителя. cf_clearance файл cookie по умолчанию действует 30 минут, это значение можно настроить через Challenge Passage.
Cloudflare использует SameSite=None в cf_clearance файл cookie, чтобы запросы посетителя с разных имён хостов не сталкивались с повторными проверками или ошибками. Когда SameSite=None используется, его необходимо задавать вместе с Secure флаг.
С помощью Secure flag requires sending the cookie via an HTTPS connection. If you use HTTP on any part of your website, the cf_clearance файл cookie по умолчанию имеет значение SameSite=Lax, что может привести к нарушению работы вашего веб-сайта.
Чтобы устранить проблему, переведите трафик своего сайта на HTTPS. Cloudflare предлагает для этого две функции:
Партиционированные cookie-файлы (CHIPS) и cf_clearance
Cloudflare устанавливает Partitioned атрибут у cf_clearance файл cookie (а также на внутренний cf_chl_* файлы cookie, используемые Challenge Platform) для соответствия Cookies Having Independent Partitioned State (CHIPS) ↗ ↗.
При использовании CHIPS cookie-файл, установленный в контексте третьей стороны (например, внутри iframe или для стороннего ресурса, встраиваемого с другого сайта), сохраняется в разделе, привязанном к сайту верхнего уровня, а не используется совместно всеми сайтами, которые встраивают эту третью сторону. В браузерах на основе Chromium, которые блокируют сторонние cookie-файлы, это сохраняет состояние проверки для межсайтового встраиваемого контента, который иначе оказался бы нерабочим. В браузерах, не реализующих CHIPS, Partitioned атрибут игнорируется, и поведение не меняется.
Partitioned атрибут не применяется к __cf_bm.
Влияние на встроенные проверки
Поскольку cf_clearance партиционирован, разрешение, полученное в одном контексте верхнего уровня, не используется повторно в другом контексте верхнего уровня. Если посетитель проходит проверку при прямом посещении сайта, это разрешение автоматически не переносится на другой сайт, который встраивает данный, и наоборот. Такое поведение предусмотрено спецификацией CHIPS.
Partitioned требует SameSite=None; Secure
Partitioned атрибут действует только на cookie, для которых также задан SameSite=None; Secure. Если ваш сайт обслуживает не весь трафик по HTTPS, cf_clearance файл cookie переключается на SameSite=Lax (см. Известные проблемы с SameSite и cf_clearance файлы cookie), и Partitioned атрибут не имеет эффекта.