HttpRuntimeSection.EnableHeaderChecking Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 de 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
en et %0a
. Cela permet de vaincre 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 de vecteurs d’attaque sur le client. Toutefois, il n’est jamais judicieux de renvoyer des données non approuvées 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é EnableHeaderChecking sur false
. Étant donné que l’analyse des en-têtes a un impact sur les performances, si vous êtes certain d’effectuer 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.