在ASP.NET中设置SameSite = None和安全

时间:2020-02-05 07:09:51

标签: c# asp.net cookies web-config samesite

了解为防止跨站点伪造而实施的SameSite更改。 来源:https://blog.chromium.org/2019/10/developers-get-ready-for-new.html

我正在尝试将其值设置为“无”,并按广告中的说明使用Secure

我当前的web.config设置如下:

<system.web>
    <sessionState cookieless="UseCookies" 
       timeout="20" 
       cookieSameSite="None" 
       xdt:Transform="Replace" 
       xdt:Locator="Match(cookieless)"/>
  </system.web>

文档来源: https://docs.microsoft.com/en-us/dotnet/api/system.web.configuration.sessionstatesection.cookiesamesite?view=netframework-4.8#System_Web_Configuration_SessionStateSection_CookieSameSite

但仍然出现以下错误:

A cookie associated with a resource at `mywebsite.net` was set with `SameSite=None` but without `Secure`. A future release of Chrome will only deliver cookies marked `SameSite=None` if they are also marked `Secure`.

如何在上面的web.config文件中指定secure属性?任何线索将不胜感激。

2 个答案:

答案 0 :(得分:5)

根据Microsoft的此链接,sessionState没有该属性,因此它属于httpCookies部分。 https://docs.microsoft.com/en-us/aspnet/samesite/system-web-samesite 希望有帮助。

答案 1 :(得分:0)

您还可以在创建Cookie时进行设置

using SameSiteMode = Microsoft.AspNetCore.Http.SameSiteMode;
....
context.HttpContext.Response.Cookies.Append(cookie.Key, cookie.Value,
 new CookieOptions { SameSite = SameSiteMode.None,Secure = true });