Обработка изменений свойства SameSite в файлах cookie в браузере Chrome

Что такое SameSite?

SameSite — это свойство, которое можно задать в файлах cookie HTTP для предотвращения атак с подделкой межсайтовых запросов (CSRF) в веб-приложениях

  • Если параметр SameSite имеет значение Нестрого, файл cookie отправляется в запросах на том же сайте и в запросах GET от других сайтов. Он не отправляется в запросах GET между доменами.
  • Значение Строго гарантирует, что файл cookie отправляется в запросах только в пределах того же сайта.

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

Изменения SameSite и влияние на проверку подлинности

Последние обновления стандартов в SameSite предлагают защиту приложений, представляя поведение по умолчанию, SameSite если значение не задано как "Нестрого". Это устранение рисков означает, что файлы cookie будут ограничены HTTP-запросами, за исключением когда GET выполнено с других сайтов. Кроме того, для удаления ограничений на отправляемые файлы cookie введено значение None. Эти обновления вскоре появятся в следующей версии браузера Chrome.

Когда веб-приложения проходят проверку подлинности с помощью платформа удостоверений Майкрософт с помощью режима ответа "form_post", сервер входа отвечает приложению с помощью HTTP POST для отправки маркеров или кода проверки подлинности. Так как этот запрос является междоменным запросом (от login.microsoftonline.com к вашему домену, например, https://contoso.com/auth), файлы cookie, заданные приложением, теперь будут находиться под новыми правилами в Chrome. Файлы cookie, которые необходимо использовать в сценариях с несколькими узлами, — это файлы cookie, содержащие значения state и nonce, которые также отправляются в запросе на вход. Существуют другие файлы cookie, отброшенные идентификатором Microsoft Entra для хранения сеанса.

Если вы не обновите ваши веб-приложения, это новое поведение приведет к сбоям проверки подлинности.

Устранение рисков и примеры

Чтобы преодолеть ошибки проверки подлинности, веб-приложения, прошедшие проверку подлинности на Платформе удостоверений Microsoft, могут задать свойству SameSite значение None для файлов cookie, которые используются в междоменных сценариях при запуске в браузере Chrome. Другие браузеры (см. здесь полный список) следуют предыдущему поведению SameSite и не включают файлы cookie, если задан SameSite=None. Поэтому для поддержки проверки подлинности в нескольких браузерах веб-приложения необходимо установить значение SameSite для None только в браузере Chrome и оставить значение пустым в других браузерах.

Этот подход показан в следующем примере кода.

В следующей таблице представлены запросы на вытягивание, которые работали над изменениями SameSite в наших ASP.NET и ASP.NET Основных примерах.

Пример Запрос на вытягивание
Пошаговое руководство по веб-приложению ASP.NET Core Исправление файла cookie same site № 261
Пример веб-приложения MVC ASP.NET Исправление файла cookie same site № 35
active-directory-dotnet-admin-restricted-scopes-v2 Исправление файла cookie same site № 28

Дополнительные сведения о том, как обрабатывать файлы cookie SameSite в ASP.NET и ASP.NET Core, см. также:

Следующие шаги

Дополнительные сведения о SameSite и сценарии веб-приложения: