0

在 Google Chrome 控制台中,我收到此警告“在“URL”处设置了与跨站点资源关联的 cookie,但未设置该SameSite属性”。SameSite=None它已被阻止,因为 Chrome 现在仅在使用和设置时才提供带有跨站点请求的 cookie Secure。我在 Application>Storage>Cookies 下验证了相同的内容,我发现 Same Site 是“空白/空”,我想将其更新为“None”。

尝试了其他开发人员提到的一些方法,但似乎没有什么对我有用。

实施 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 框架 4.7.2

我需要在本地机器或服务器上做些什么,或者无论如何我可以删除此警告消息。

4

2 回答 2

1

从设置相同站点 cookie 以减轻 CSRF 的 OWASP 备忘单中,当将相同站点属性设置为无时,我们还必须在 cookie 上设置安全标志这可以通过参考this question added httponly and secure flag for set cookie in java web application来完成

所有桌面浏览器和几乎所有移动浏览器现在都支持 SameSite 属性。要跟踪实现它的浏览器和属性的使用情况,请参阅以下服务。请注意,Chrome 已宣布他们将从 Chrome 80(2020 年 2 月到期)默认将 cookie 标记为 SameSite=Lax,Firefox 和 Edge 都计划效仿。此外,标记为 SameSite=None 的 cookie 将需要 Secure 标志。

于 2020-04-03T06:41:04.373 回答
1

为我工作

<configuration>
<system.web>
<httpCookies sameSite="None" requireSSL="true" />
</system.web>
</configuration>
于 2020-07-02T11:47:39.733 回答