HttpRuntimeSection.EnableHeaderChecking Propriété

Définition

Obtient ou définit une valeur qui indique si la vérification d'en-tête est activée.

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

Valeur de propriété

true si la vérification d'en-tête est activée ; sinon, false. La valeur par défaut est true.

Attributs

Exemples

L'exemple suivant indique comment utiliser la propriété 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

Remarques

L’objectif de cette propriété est d’activer l’encodage des caractères de retour chariot et de nouvelle ligne, \r et \n, qui se trouvent dans les en-têtes de réponse.

Dans les en-têtes de réponse sortantes, les caractères représentés par les codes 0x1F et ci-dessous sont encodés, ainsi que le caractère 0x7F (caractère de suppression). La seule exception est que le caractère 0x09 (le caractère tabulation) n’est pas modifié.

Cet encodage peut aider à éviter les attaques par injection qui exploitent une application qui renvoie des données non approuvées contenues dans l’en-tête.

Notes

Cette propriété ne s’applique pas à la ligne d’état elle-même (code d’état et description d’état), mais doit s’appliquer à d’autres en-têtes. Bien que <httpRuntime> puisse être défini à n’importe quel niveau, cette propriété s’applique uniquement au niveau de l’ordinateur et de l’application.

Lorsque cette propriété est true, qui est la valeur par défaut, les \r caractères ou \n trouvés dans un en-tête de réponse sont encodés %0d dans et %0a. Cela permet de contrer les attaques par injection d’en-tête en faisant du matériel injecté une partie de la même ligne d’en-tête. Cela peut interrompre la réponse, mais ne doit pas ouvrir les vecteurs d’attaque contre le client. Toutefois, l’écho de données non approuvées n’est jamais une bonne idée dans n’importe quelle situation.

Important

Les continuations d’en-tête HTTP s’appuient sur des en-têtes couvrant plusieurs lignes et nécessitent de nouvelles lignes. Si vous devez utiliser des continuations d’en-tête, vous devez définir la propriété sur EnableHeaderCheckingfalse. Étant donné que l’analyse des en-têtes a un impact sur les performances, si vous êtes certain que vous effectuez déjà les vérifications appropriées, la désactivation de cette fonctionnalité peut améliorer les performances de votre application. Avant de désactiver cette fonctionnalité, assurez-vous que vous prenez déjà les précautions appropriées dans ce domaine.

S’applique à

Voir aussi