CA5396: HttpCookie で HttpOnly を true に設定します

プロパティ
ルール ID CA5396
Title HttpCookie で HttpOnly を true に設定します
[カテゴリ] Security
修正が中断か中断なしであるか なし
.NET 8 では既定で有効 いいえ

原因

System.Web.HttpCookie.HttpOnlyfalse に設定されます。 このプロパティの既定値は false です。

規則の説明

高度な防御手段として、セキュリティ上注意が必要な HTTP Cookie が、必ず HttpOnly としてマークされるようにしてください。 これは、スクリプトから Cookie へのアクセスを Web ブラウザーで許可してはならないことを示しています。 挿入された悪意のあるスクリプトは、Cookie を盗むための一般的な方法です。

違反の修正方法

System.Web.HttpCookie.HttpOnlytrue に設定します。

どのようなときに警告を抑制するか

  • 次の例のように、HttpOnly のグローバル値が設定されている場合:

    <system.web>
        ...
        <httpCookies httpOnlyCookies="true" requireSSL="true" />
    </system.web>
    
  • Cookie に機密データがないことがわかっている場合。

警告を抑制する

単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。

#pragma warning disable CA5396
// The code that's violating the rule is on this line.
#pragma warning restore CA5396

ファイル、フォルダー、またはプロジェクトの規則を無効にするには、構成ファイルでその重要度を none に設定します。

[*.{cs,vb}]
dotnet_diagnostic.CA5396.severity = none

詳細については、「コード分析の警告を抑制する方法」を参照してください。

違反:

using System.Web;

class ExampleClass
{
    public void ExampleMethod()
    {
        HttpCookie httpCookie = new HttpCookie("cookieName");
        httpCookie.HttpOnly = false;
    }
}

解決方法:

using System.Web;

class ExampleClass
{
    public void ExampleMethod()
    {
        HttpCookie httpCookie = new HttpCookie("cookieName");
        httpCookie.HttpOnly = true;
    }
}