设置了与“ URL”处的跨站点资源关联的cookie,但未设置“ SameSite”属性

时间:2020-04-03 06:31:47

标签: c# samesite .net-4.7.2 google-sso

在Google Chrome控制台中,我收到以下警告:“设置了与跨站点资源“ URL”关联的cookie,但未设置SameSite属性”。它已被阻止,因为Chrome现在仅在将跨站点请求设置为SameSite=NoneSecure的情况下才提供cookie。 我在“应用程序”>“存储”>“ Cookies”下验证了相同的内容,发现我的“同一站点”为“空白/空”,我想将其更新为“无”。

尝试了其他开发人员提到的一些方法,但似乎没有任何帮助。

实现1:使用下面提到的代码更新了我的web.config

<sessionState cookieSameSite="None" />
<httpCookies httpOnlyCookies="true" requireSSL="true" />  

// sameSite =“ None”在httpCookies部分下不适合我,并且不允许我输入错误消息sameSite属性

实现2:我在其中创建Cookie的修改后的类文件代码

HttpCookie sessionCookie = new HttpCookie("Token");
sessionCookie.Value = sessionToken;
                sessionCookie.HttpOnly = true;
                sessionCookie.SameSite = SameSiteMode.None;
sessionCookie.Secure = FormsAuthentication.RequireSSL && Request.IsSecureConnection;
sessionCookie.Domain = Request.Url.Host;
Response.Cookies.Add(sessionCookie); 

实现3:创建了单独的MVC过滤器来处理此问题

public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var response = filterContext.RequestContext.HttpContext.Response;

            if (response != null)
            {
                response.AddHeader("Set-Cookie", "HttpOnly;Secure;SameSite=None");
            }

            base.OnActionExecuting(filterContext);
        }

实施4:

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

目标.net Framework 4.7.2

我是否需要在本地计算机或服务器上进行任何操作,或者可以删除此警告消息的任何方式。

2 个答案:

答案 0 :(得分:1)

通过OWASP cheatsheet设置相同的站点cookie以减轻CSRF,当将相同的站点属性设置为none时,我们也必须在cookie上设置安全标志。这可以通过参考问题adding httponly and secure flag for set cookie in java web application

来完成。

所有台式机浏览器和几乎所有移动浏览器现在都支持SameSite属性。要跟踪实现该功能的浏览器以及该属性的用法,请参考以下服务。请注意,Chrome已宣布从Chrome 80起默认将cookie标记为SameSite = Lax(将于2020年2月到期),并且Firefox和Edge都计划效仿。 此外,标记为SameSite = None的cookie将需要Secure标志。

答案 1 :(得分:1)

为我工作

<configuration>
<system.web>
<httpCookies sameSite="None" requireSSL="true" />
</system.web>
</configuration>