Новая настройка в файлах cookie: SameSite=None; Secure

Четверг, 16 января 2020 г.

Эта статья посвящена тому, как планируемые изменения в Chrome могут повлиять на функции вашего сайта для пользователей. Она уже была опубликована в блоге для разработчиков Chromium.

В мае команда Chrome представила модель обработки файлов cookies, безопасную по умолчанию и созданную на основе новой системы классификации таких файлов (см. спецификацию). Эта инициатива – часть нашего плана по повышению уровня конфиденциальности и безопасности в интернете.

Разработчики Chrome собираются реализовать новую модель в Chrome 80 в феврале 2020 г. Компании Mozilla и Microsoft также планируют обеспечить ее поддержку в браузерах Firefox и Edge, но у них свои сроки. Изменения в Chrome вступят в силу через несколько месяцев, однако разработчикам, которые применяют файлы cookie, стоит начать подготовку к этому уже сейчас. Эта запись содержит общую информацию о будущих изменениях. Подробные инструкции для разработчиков вы можете найти на сайте web.dev.

На многих сайтах используются сторонние решения, например теги рекламных сервисов, инструменты для подбора рекомендуемого контента, виджеты (в том числе от социальных сетей) и т. п. Когда вы посещаете веб-страницы, эти сторонние сервисы могут сохранять файлы cookie в вашем браузере и впоследствии обращаться к ним, чтобы учитывать заданные вами настройки сайта или анализировать вовлеченность аудитории. Каждый файл cookie относится к определенному домену. Если этот домен соответствует стороннему сервису, а не сайту в адресной строке пользователя, то контекст файла cookie считается сторонним, то есть такой файл предназначен для нескольких сайтов.

Менее очевидный пример – когда владелец нескольких сайтов использует для них всех один и тот же файл cookie. Хотя сайты и файл cookie принадлежат одному и тому же человеку, контекст все равно считается сторонним, поскольку домен файла cookie не соответствует одному или нескольким сайтам, на которых он используется.

Домен сайта не совпадает с доменом в файле cookie

Файл cookie имеет сторонний контекст, если он предназначен для нескольких сайтов. Это может быть в ситуации, когда сторонний ресурс на веб-странице обращается к файлу cookie, который не относится к домену сайта.

Если же домен в адресной строке пользователя совпадает с доменом файла cookie, это называется собственным контекстом, то есть файл предназначен для одного сайта. Файлы cookie, предназначенные для одного сайта, обычно используются, чтобы хранить данные о входе в систему, запоминать предпочтения пользователей и осуществлять веб-аналитику.

Домен сайта совпадает с доменом файла cookie

Когда ресурс на веб-странице получает доступ к файлу cookie, связанному с доменом сайта, это называется собственным контекстом, то есть файл предназначен для одного сайта.

Сегодня в случае, когда файл cookie предназначен только для использования в собственном контексте, разработчик может запретить сторонний доступ к нему с помощью одной из этих настроек: SameSite=Lax или SameSite=Strict. Однако поскольку далеко не все разработчики выполняют эту рекомендацию, очень много файлов cookie даже в собственном контексте по-прежнему подвергается угрозам, таким как подделка межсайтовых запросов.

Чтобы защитить интернет-ресурсы и пользователей, мы разработали новую модель, безопасную по умолчанию: все файлы cookie должны быть недоступны сторонним сервисам, если не указано иное. Чтобы разрешить сторонний доступ к файлам cookie, разработчикам следует использовать новую настройку: SameSite=None. Если задан атрибут SameSite=None, необходимо добавить дополнительный атрибут Secure, чтобы межсайтовые файлы cookie были доступны только по протоколу HTTPS. Это не устранит все риски, связанные с открытым доступом, но защитит сайт от сетевых атак.

Помимо очевидных преимуществ с точки зрения безопасности, явное объявление межсайтовых файлов cookie обеспечивает пользователям большую прозрачность и возможность выбирать. Например, браузеры могут предлагать пользователям точную настройку файлов cookie, доступных только для одного сайта, независимо от межсайтовых файлов cookie.

Контроль в Chrome: с февраля 2020 г.

В феврале выйдет Chrome 80, и система станет воспринимать файлы cookie, для которых не задано значение SameSite, как файлы со значением SameSite=Lax. Сторонний доступ будет возможен только для файлов cookie с атрибутом Secure SameSite=None, который означает безопасное подключение. Средства отслеживания статуса атрибутов SameSite=None и Secure, доступные на платформе Chrome, будут обновляться с учетом актуальной информации о запуске.

Представители Mozilla подтвердили, что реализуют поддержку новой модели классификации файлов cookie и намерены использовать настройку "SameSite=None; Secure" для межсайтовых файлов cookie в Firefox. Компания Microsoft недавно сообщила о том, что готова использовать такую же модель. Эксперимент начнется с Microsoft Edge 80.

Подготовка и возможные сложности

Если вы работаете с межсайтовыми файлами cookie, примените к ним настройку "SameSite=None; Secure". У большинства разработчиков не возникнет сложностей с реализацией, но мы рекомендуем заранее протестировать код, чтобы выявить сложности и особые случаи. Примеры:

  • Не все языки и библиотеки в настоящее время поддерживают значение None. Поэтому разработчикам приходится непосредственно прописывать заголовок файла cookie. В этом репозитории GitHub вы можете найти инструкции по реализации настройки "SameSite=None; Secure" для разных языков, библиотек и фреймворков.
  • Некоторые браузеры, например Chrome, Safari и UC Browser, могут обрабатывать значение None нежелательным образом. В таком случае разработчики должны прописать в коде исключения для клиентов этих браузеров. В частности, это касается компонентов Android WebView, работающих на основе старых версий Chrome. Список неподдерживаемых клиентов доступен здесь.
  • Разработчикам приложений рекомендуется объявить подходящие настройки SameSite cookie для компонентов Android WebViews, основанных на версиях Chrome, которые поддерживают значение None. Это стоит сделать для файлов cookie, доступ к которым осуществляется как через заголовки HTTP(S), так и через CookieManager API Android WebView. Однако учтите, что новая модель будет реализована для Android WebView позже.
  • Если некоторые корпоративные сервисы, такие как система единого входа или внутренние приложения, не будут готовы к запуску в феврале, то системным администраторам необходимо реализовать специальные правила для того, чтобы браузер Chrome работал по-старому.
  • Если у вас есть файлы cookie как с собственным, так и со сторонним контекстом, используйте их отдельно, чтобы получить доступ ко всем преимуществам атрибута SameSite=Lax в собственном контексте.

В статье об атрибуте SameSite, позволяющем управлять обработкой файлов cookie, вы найдете советы, которые помогут вам действовать в описанных выше ситуациях. Также из нее вы узнаете, к кому обратиться с вопросами по этой теме.

Вы можете узнать, как новые алгоритмы работы браузера Chrome отразятся на вашем сайте или на файлах cookie, которыми вы управляете. Для этого перейдите на страницу chrome://flags, используя браузер Chrome версии 76 или более поздней, а затем включите эксперименты SameSite by default cookies и Cookies without SameSite must be secure. Также эти эксперименты будут автоматически включены у отдельных пользователей бета-версии Chrome 79. Такие пользователи могут столкнуться с проблемами из-за несовместимости с сервисами, не поддерживающими новую модель обработки файлов cookie. В этом случае следует перейти на страницу chrome://flags и отключить эксперименты.

Если вы управляете только файлами cookie, предназначенными для одного сайта, вам не нужно будет ничего предпринимать. Chrome автоматически заблокирует такие файлы cookie от внешнего доступа, даже если атрибут SameSite отсутствует или для него не задано значение. Однако мы настоятельно рекомендуем вам задать для атрибута SameSite подходящее значение (Lax или Strict). Не полагайтесь на поведение браузера по умолчанию, поскольку не во всех браузерах при этом работает защита файлов cookie с собственным контекстом.

Наконец, если вас интересует, готовы ли поставщики сервисов для сайта к переходу на новую модель обработки файлов cookie, обратите внимание на уведомления в консоли Инструментов разработчика (Chrome версии 77 и более поздних). Если на странице есть межсайтовые файлы cookie, для которых не заданы нужные настройки, вы увидите следующее:

Для файла cookie, связанного с межсайтовым ресурсом в домене файла cookie, не задан атрибут SameSite

Некоторые поставщики, в том числе определенные сервисы Google, должны внести необходимые изменения в течение нескольких месяцев до выхода Chrome 80 в феврале. Вы можете связаться со своими партнерами и узнать, готовы ли они.