Share via


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 (タブ文字) が変更されていないことです。

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

Note

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

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

重要

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

適用対象

こちらもご覧ください