我在Microsoft Dynamics页面的iframe中加载了.NET MVC应用程序。 最初,用户将打开主页。家庭控制器将重定向到登录页面:
return RedirectToAction("Index", "Login", new { returnUrl = redirectURL, error = errorMessage });
在此更新KB4533002 Cumulative Update for .NET之前,如果SameSite为None或未指定,则添加SameSite = Lax,这是可以的。 然后,我在网络配置中添加了出站规则,以发送 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
Screenshot from Edge Developer Tools
知道如何预防这种情况的人吗?
答案 0 :(得分:1)
可能是因为默认的SameSite设置为宽松。您可以尝试根据this link设置(SameSiteMode)(-1)
来删除SameSite属性:
在已应用这些更新的系统上,可以通过将SameSiteMode设置为
(SameSiteMode)(-1)
来指定以前的行为。您可以使用web.config中的字符串Unspecified
来指定此行为。
有关如何进行设置的更多信息,可以参考this article和this answer。
此外,您还可以参考两个类似的线程:
(1) how SameSite attribute added to my Asp.net_SessionID cookie automatically?
(2) How to set SameSite cookie attribute to explicit None ASP NET Core
答案 1 :(得分:0)
谢谢于周。这很有用,但我将其设置为None而不是Unspecified。
<sessionState mode="SQLServer" sqlConnectionString="***" ... cookieless="UseCookies" cookieSameSite="None" />
这与出站规则(SameSite = None; Secure)对我有用。