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

【 ASP.NET Core 】CookieSecurePolicyの設定 実装方法

ASP.NET Core(.NET 6)でCookieSecurePolicyを設定する方法を解説します。

asp.net core

CookieSecurePolicyについて

CookieSecurePolicy は、Cookieをセキュアにするためのポリシーを設定するために使用されます。

セキュアなCookieは、HTTPSを使用して通信する場合にのみ送信され、HTTP通信の場合は送信されません。これにより、中間者攻撃や盗聴から保護されるため、セキュリティの工場に役立ちます。

基本的なCookieの名前であるName属性、Cookieの値であるValue属性など、様々な要素があります。
その中でも、Secureという属性によって、付与することでCookieはHTTPS通信でなければブラウザ、サーバ間で送信されなくなります。

CookieSecurePolicyのオプション

CookieSecurePolicy には3つオプションがあります。以下がその設定の詳細です。

オプション詳細
Always常にセキュアなクッキーを使用します。HTTPS通信の場合のみ送信されます。
SameAsRequest要求がHTTPSである場合にのみ、セキュアなクッキーを使用します。
None常に非セキュアなクッキーを使用します。HTTPおよびHTTPS通信の両方で送信されます。

セキュリティの観点から、Alwaysを使用することが推奨されます。
ただし、HTTPSが使用できない場合や開発環境でテストを実行する場合などは、Noneを使用することができます。

もし、クロスサイトでCookieを送信する場合、Cookie属性のSameSiteSecureの設定が必要でCookieはHTTPS通信でなければブラウザ、サーバ間で送信されなくなります。
その場合は、CookieSecurePolicyのオプションはAlwaysに設定する必要があります。
Cookie属性SameSite設定に関してはこちらを参照してください。

CookieSecurePolicyの実装方法

以下がCookieのCookieSecurePolicyを実装する方法です。

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

// Cookie による認証スキーム
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
     // SameSiteMode:None の場合
        options.Cookie.SameSite = SameSiteMode.None;
        // CookieSecurePolicy:Always の場合
     options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
    });

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#, プログラミング
-, ,