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();

おすすめ記事はコチラ

ASP.NET Web Forms 1

この記事ではマイクロソフト社が開発・提供しているWebアプリケーション開発用フレームワーク「ASP.NET」の「Web Forms」を「MVC」と比較しながらメリットやデメリット等を含めて解説していき ...

C#VB 2

今回はC#(ver.7.0以降)、VB(ver. 15以降)でforeachループ内で繰り返し回数を参照する方法について解説していきます。 従来の記述方法とよりスマートに記述する方法の2通りを以下にな ...

3

この記事ではSQL Serverで使用できる「STUFF」という便利な関数の使い方について、解説していきます! 他にも便利な関数があれば、別記事にて使用方法を解説していきたいと思います! STUFF ...

4

今回はSQL ServerでデータをXML形式で取得する方法について書いていきます。 FOR XML PATH SQL Serverには「FOR XML PATH」という関数があって、SQL分の末尾に ...

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