首页 > 解决方案 > 当 SameSite=None 安全时,Internet Explorer/Edge(非 chromium)添加额外的 SameSite=Lax

问题描述

我在 Microsoft Dynamics 页面的 iframe 中加载了 .NET MVC 应用程序。最初,用户将打开主页。主控制器重定向到登录页面:

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

在此更新KB4533002 .NET 累积更新之前,这是可以的,当 SameSite 为 None 或未指定时,添加 SameSite=Lax。然后我在 Web 配置中添加出站规则以发送SameSite=None; 安全

<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。

但是 Internet Explorer 和 Edge(不是 Chromium)正在添加额外的 SameSite:

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

Edge 开发人员工具的屏幕截图

有人知道如何防止这种情况吗?

标签: internet-explorermicrosoft-edgesamesite

解决方案


这可能是因为默认的 SameSite 设置为松散。您可以尝试通过(SameSiteMode)(-1)根据此链接设置来删除 SameSite 属性:

在应用了这些更新的系统上,您可以通过将 SameSiteMode 设置为 来指定以前的行为(SameSiteMode)(-1)Unspecified您可以使用web.config中的字符串指定此行为。

有关如何设置的更多信息,您可以参考这篇文章这个答案

此外,您还可以参考两个类似的线程:

(1) SameSite 属性如何自动添加到我的 Asp.net_SessionID cookie 中?

(2) 如何将 SameSite cookie 属性设置为显式 None ASP NET Core


推荐阅读