Inte rnet Explorer / Edge (не хром) добавляет дополнительный SameSite = Lax, когда SameSite = Нет Безопасный - PullRequest
1 голос
/ 05 февраля 2020

У меня есть приложение. NET MVC, загруженное в iframe на странице Microsoft Dynamics. Изначально пользователь откроет домашнюю страницу. Домашний контроллер перенаправляет на страницу входа в систему:

return RedirectToAction("Index", "Login", new { returnUrl = redirectURL, error = errorMessage });

Это было нормально до этого обновления KB4533002 Накопительное обновление для. NET добавление SameSite = Lax, когда SameSite отсутствует или не указано. Затем я добавил исходящие правила в веб-конфигурацию, чтобы отправить SameSite = None; Secure .

<rewrite>
      <outboundRules>
        <clear />
        <rule name="Add SameSite" preCondition="No SameSite">
          <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
          <action type="Rewrite" value="{R:0}; SameSite=None" />
        </rule>
        <rule name="Add Secure" preCondition="No Secure">
          <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
          <action type="Rewrite" value="{R:0}; Secure" />
        </rule>
        <preConditions>
          <preCondition name="No SameSite">
            <add input="{RESPONSE_Set_Cookie}" pattern="." />
            <add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=None" negate="true" />
          </preCondition>
          <preCondition name="No Secure">
            <add input="{RESPONSE_Set_Cookie}" pattern="." />
            <add input="{RESPONSE_Set_Cookie}" pattern="; Secure" negate="true" />
          </preCondition>
        </preConditions>
      </outboundRules>
    </rewrite>

Это работает в Chrome, Firefox и последней версии Edge.

Но Inte rnet Explorer и Edge (не Chromium) добавляют дополнительные SameSite:

HttpOnly: true
path:/
SameSite: Lax
SameSite: None
Secure: true

Снимок экрана из Edge Developer Tools

Кто-нибудь знает, как это предотвратить?

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Возможно, потому что для SameSite по умолчанию установлено значение lax. Вы можете попытаться удалить атрибут SameSite, установив (SameSiteMode)(-1) в соответствии с этой ссылкой :

В системах, где были применены эти обновления, вы можете указать предыдущее поведение, установив SameSiteMode to (SameSiteMode)(-1). Вы можете указать это поведение, используя строку Unspecified в web.config.

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

Кроме того, есть два похожих потока, на которые вы также можете сослаться:

(1) как атрибут SameSite добавлен в мой Asp .net_SessionID cook ie автоматически?

(2) Как задать атрибут SameSite cook ie для явного None ASP NET Core

0 голосов
/ 06 февраля 2020

Спасибо, Ю Чжоу. Это было полезно, но вместо Unspecified я установил его на None.

<sessionState mode="SQLServer" sqlConnectionString="***" ... cookieless="UseCookies" cookieSameSite="None" />

Это с правилами исходящих сообщений (SameSite = None; Secure) сработало для меня.

...