Share via


CA5365: HTTP ヘッダーのチェックを無効にしません

プロパティ
ルール ID CA5365
Title HTTP ヘッダーのチェックを無効にしません
[カテゴリ] Security
修正が中断か中断なしであるか なし
.NET 8 では既定で有効 いいえ

原因

EnableHeaderCheckingfalse に設定します。

規則の説明

HTTP ヘッダーのチェックでは、応答ヘッダーに含まれる復帰 \r や改行文字 \n のエンコードを有効にします。 このエンコードは、ヘッダーに含まれる信頼されていないデータをエコーするアプリケーションを悪用するインジェクション攻撃を回避するのに役立ちます。

違反の修正方法

EnableHeaderCheckingtrue に設定します。 または、既定値が true であるため、false への割り当てを削除します。

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

HTTP ヘッダーの継続では、ヘッダーが複数の行にまたがり、改行を含める必要があります。 ヘッダーの継続を使用する必要がある場合は、EnableHeaderChecking プロパティを false に設定する必要があります。 ヘッダーのチェックはパフォーマンスに影響します。 既に正しいチェックが行われていることがわかっている場合は、この機能をオフにすると、アプリケーションのパフォーマンスが向上することがあります。 この機能を無効にする前に、この領域で適切な予防措置を講じていることを確認してください。

警告を抑制する

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

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

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

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

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

疑似コードの例

using System;
using System.Web.Configuration;

class TestClass
{
    public void TestMethod()
    {
        HttpRuntimeSection httpRuntimeSection = new HttpRuntimeSection();
        httpRuntimeSection.EnableHeaderChecking = false;
    }
}

解決策

using System;
using System.Web.Configuration;

class TestClass
{
    public void TestMethod()
    {
        HttpRuntimeSection httpRuntimeSection = new HttpRuntimeSection();
        httpRuntimeSection.EnableHeaderChecking = true;
    }
}