HttpRuntimeSection.EnableHeaderChecking プロパティ

定義

ヘッダー チェックが有効かどうかを示す値を取得または設定します。

public:
 property bool EnableHeaderChecking { bool get(); void set(bool value); };
[System.Configuration.ConfigurationProperty("enableHeaderChecking", DefaultValue=true)]
public bool EnableHeaderChecking { get; set; }
[<System.Configuration.ConfigurationProperty("enableHeaderChecking", DefaultValue=true)>]
member this.EnableHeaderChecking : bool with get, set
Public Property EnableHeaderChecking As Boolean

プロパティ値

true ヘッダー チェックが有効な場合は〘。それ以外の場合は false。 既定値は true です。

属性

次の例は、 EnableHeaderChecking プロパティの使用方法を示しています。

// Get the EnableHeaderChecking property value.
Response.Write("EnableHeaderChecking: " +
  configSection.EnableHeaderChecking + "<br>");

// Set the EnableHeaderChecking property value to true.
configSection.EnableHeaderChecking = true;
' Get the EnableHeaderChecking property value.
Response.Write("EnableHeaderChecking: " & _
  configSection.EnableHeaderChecking & "<br>")

' Set the EnableHeaderChecking property value to true.
configSection.EnableHeaderChecking = True

注釈

このプロパティの目的は、応答ヘッダーに含まれる復帰文字と改行文字 ( \r\n) のエンコードを有効にすることです。

送信応答ヘッダーでは、0x1F以下のコードで表される文字がエンコードされ、文字0x7F (文字の削除) も行います。 唯一の例外は、文字0x09 (タブ文字) が変更されていないことです。

このエンコードは、ヘッダーに含まれる信頼されていないデータをエコーするアプリケーションを悪用するインジェクション攻撃を回避するのに役立ちます。

このプロパティは、状態行自体 (状態コードと状態の説明) には適用されませんが、他のヘッダーに適用する必要があります。 <httpRuntime>は任意のレベルで設定できますが、このプロパティはマシンおよびアプリケーション レベルでのみ適用できます。

このプロパティが既定の trueの場合、応答ヘッダーで見つかった \r または \n 文字は、 %0d および %0aにエンコードされます。 これにより、注入されたマテリアルを同じヘッダー ラインの一部にすることで、ヘッダーインジェクション攻撃を打ち負かします。 これにより応答が中断される可能性がありますが、クライアントに対する攻撃ベクトルを開くべきではありません。 しかし、信頼されていないデータをエコーバックすることは、どのような状況でも良い考えではありません。

Important

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

適用対象

こちらもご覧ください