internet-explorer - 当 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
有人知道如何防止这种情况吗?
解决方案
这可能是因为默认的 SameSite 设置为松散。您可以尝试通过(SameSiteMode)(-1)
根据此链接设置来删除 SameSite 属性:
在应用了这些更新的系统上,您可以通过将 SameSiteMode 设置为 来指定以前的行为
(SameSiteMode)(-1)
。Unspecified
您可以使用web.config中的字符串指定此行为。
此外,您还可以参考两个类似的线程:
推荐阅读
- amazon-web-services - 在 Ubuntu 服务器上挂载多个存储桶,如何配置多个访问密钥?
- python-3.x - 如何将 python 文件发送到 docker 容器(使用 python 图像)并将输出返回到本地
- angular - 如何使用角度指令在按下转义键时破坏主机组件?
- mysql - 无法连接到数据库服务器 - MySQL Workbench
- regex - 正则表达式问题:对中文汉字和拼音进行排序
- reactjs - 我们什么时候需要在 ReactJS 中使用 Class 组件?
- scala - 如何编写代码来创建一个数据集,其中的列具有数组列的元素作为值并且它们的名称是位置?
- c# - Cosmos SDK3 Container 可以是单例吗?
- php - PHP在加入mysqli查询后获取所有列
- rust - 为什么通过移动捕获弧使我的关闭 FnOnce 不是 Fn