次の方法で共有


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

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

原因

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;
    }
}