Обработка изменений свойства SameSite в файлах cookie в браузере Chrome
Что такое SameSite?
SameSite
— это свойство, которое можно задать в файлах cookie HTTP для предотвращения атак с подделкой межсайтовых запросов (CSRF) в веб-приложениях
- Если параметр
SameSite
имеет значение Lax, файл cookie отправляется в запросах на том же сайте и в GET запросах из других сайтов. Он не отправляется в запросах GET между доменами. - Значение Строго гарантирует, что файл cookie отправляется в запросах только в пределах того же сайта.
По умолчанию значение SameSite
НЕ задано в браузерах, поэтому нет никаких ограничений на отправку файлов cookie в запросах. Приложению нужно будет присоединиться к защите CSRF, задав значение Нестрого или Строго в соответствии с требованиями.
Изменения SameSite и влияние на проверку подлинности
Последние обновления стандартов в SameSite предлагают защиту приложений, делая поведение по умолчанию SameSite
, когда значение не задано, как "Lax-режим". Это устранение рисков означает, что файлы 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 ID для поддержки сеанса.
Если вы не обновите ваши веб-приложения, это новое поведение приведет к сбоям проверки подлинности.
Устранение рисков и примеры
Чтобы преодолеть ошибки проверки подлинности, веб-приложения, прошедшие проверку подлинности на Платформе удостоверений Microsoft, могут задать свойству SameSite
значение None
для файлов cookie, которые используются в междоменных сценариях при запуске в браузере Chrome.
Другие браузеры (см. здесь полный список) следуют предыдущему поведению SameSite
и не включают файлы cookie, если задан SameSite=None
.
Поэтому для поддержки проверки подлинности в нескольких браузерах веб-приложения необходимо установить значение SameSite
для None
только в браузере Chrome и оставить значение пустым в других браузерах.
Этот подход показан в следующем примере кода.
В следующей таблице представлены пулл-реквесты, которые обошли изменения SameSite в наших примерах ASP.NET и ASP.NET Core.
Дополнительные сведения о том, как обрабатывать файлы cookie SameSite в ASP.NET и ASP.NET Core, см. также:
Следующие шаги
Дополнительные сведения о SameSite и сценарии веб-приложения: