SameSite=None w/ IE11 中的 Secure Breaking iFrame

SameSite=None w/ Secure Breaking iFrame in IE11

随着最近的更改,SameSite cookie 属性似乎正在对我的网站造成影响。之前在我的站点上运行的 cross-browser iframe 现在已损坏 - 即使使用 SameSite=None;在响应 header.

中安全地通过 iFrame 传递

我看到来自人们的非常不同的报告说 Windows 7 不支持 SameSite=none。其他人说 Secure 正在破坏或没有破坏它。但即使是当前的 Microsoft 文档也没有明确说明 Win7 IE11 应该如何响应 SameSite=None.

目前,我正在寻找可以提供帮助的任何人的一些提示或技巧。我已经做了我能想到的一切。这以前有效,现在突然阻止了 iFrame 并抛出 500 错误。 set-cookie 的顺序会导致这个吗?

通过一些浏览器测试,我发现了以下内容:

  • Windows 10 - IE11 损坏,Edge 损坏,Edge(测试版)有效
  • Windows 8.1 - IE11 有效,边缘(测试版)有效
  • Windows 8 - IE11 损坏,Edge(测试版)有效
  • Windows 7 - IE11 损坏,无边缘
  • Set-Cookie 响应 header:
    Set-Cookie MySitePersistence=436457226.47873.0000; path=/; httponly; secure; SameSite=none; Secure

    我尝试使用
    直接将 IE 作为重写前提条件 <add input="{RESPONSE_Set_Cookie}" pattern="." />
    <add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=none" negate="true" />
    <add input="{HTTP_USER_AGENT}" pattern="^.*MSIE ([0-9]{1,}[\.0-9]{0,})*.*$" negate="true" />
    <add input="{HTTP_USER_AGENT}" pattern="^.*Trident/.*rv:([0-9]{1,}[\.0-9]{0,})*.*$" negate="true" />

    出现此问题是因为 Asp.NET_SessionID cookie 因 cookie 的新更改而未始终发送,并且 cookie 现在具有 SameSite=Lax 属性。

    您可以将会话 cookie 的 SameSite 属性 设置为 “None”,方法是将其添加到 web.config:

    <system.web>     
         <sessionState cookieSameSite="None" />     
    </system.web> 
    

    这与出站规则 (SameSite=None; Secure) 一起工作。你可以参考.

    更多信息参考:

    (1) SameSite in code for your ASP.net applications

    (2) SameSite=Lax in the new world

    (3) SameSite cookie updates in ASP.net, or how the .Net Framework from December changed my cookie usage