ASP.NET Core C# プログラミング

【 ASP.NET Core 】Cookie のSameSite属性 実装方法

ASP.NET Core(.NET 6)でCookieSameSite属性を取得する方法を解説します。

asp.net core

SameSite属性について

Cookieには発行する際にいくつかの属性を付与することができます。

基本的なCookieの名前であるName属性、Cookieの値であるValue属性など、様々な要素があります。
その中でも、SameSiteという属性によって、ブラウザサーバ間Cookie送信クロスサイトでも行うかの設定をすることができます。

SameSite属性の各設定値

以下はSameSite属性に設定できる値とその効果、セキュリティの強度になります。
Cookieのやり取りを行う対象によってどのような値を設定すれば良いかが変わってきます。

例えば、フロント側とサーバ側でクロスサイトでCookieのやりとりを行う場合は、SameSiteの属性はNoneを設定する必要があります。
ただし、SameSite属性にNoneを設定する場合は、CookieのSecure属性をtrueにする設定が必須となります。これでCookieはHTTPS通信でなければブラウザ、サーバ間で送信されなくなります。

また、もし上記の通りにSecure属性をtrueに設定した場合は、それとは別でCookieSecurePolicyオプションを実装する必要があります。
CookieSecurePolicyの設定に関してはこちらを参照してください。

名前効果セキュリティ強度
Strict同一サイトのみCookie送信可
Laxクロスサイトの場合
HTTPメソッドがGET等特定の条件下のみ
Cookie送信可
Noneクロスサイト、同一サイト関係なく
Cookie送信可
SameSite属性

SameSite属性の実装方法

以下がCookieのSameSite属性を実装する方法です。

Program.csCookieによる認証スキームを追加した箇所のオプションとしてSameSite属性の設定を追加する必要があります。
Cookieの認証スキームやそれを使ったログイン認証機能の実装方法についてはこちらを参照してください。

// Cookie による認証スキーム
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
     // SameSiteMode: None or Lax or Strict で設定する
        options.Cookie.SameSite = SameSiteMode.None;
    });

var app = builder.Build();

おすすめ記事はコチラ

スマレジ テックファーム 1

スマレジ テックファーム で Webエンジニアとして勤めている tomoです。 今回は株式会社スマレジや私が所属している 「 スマレジ テックファーム 」についてPRしていきたいと思います。 スマレジ ...

2

FromBody 属性を使用して、 ASP.NET Core(.NET 6)のWebAPIでBodyパラメータのJSONを受け取る方法を解説します。 FromBody 属性 POSTやGETで呼び出さ ...

PC picture 3

ASP.NET Core(.NET 6)でCookie認証のタイムアウトを設定する方法を解説します。 Cookieの有効期限について Cookieには通常はタイムアウト(有効期限)を設定します。 基本 ...

4

ASP.NET Core(.NET 6)でクロスオリジンリクエスト ( CORS )を設定する方法を解説します。 簡単に クロスオリジンリクエスト ( CORS )とは何かについても少し解説したいと思 ...

-ASP.NET Core, C#, プログラミング
-, ,