HttpRuntimeSection.EnableHeaderChecking Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define um valor que indica se a verificação de cabeçalho está habilitada.
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
Valor da propriedade
true
se a verificação de cabeçalho estiver habilitada; caso contrário, false
. O valor padrão é true
.
- Atributos
Exemplos
O exemplo a seguir mostra como usar a EnableHeaderChecking propriedade .
// 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
Comentários
A finalidade dessa propriedade é habilitar a codificação do retorno de carro e dos caracteres de nova linha, \r
e \n
, que são encontrados nos cabeçalhos de resposta.
Em cabeçalhos de resposta de saída, os caracteres representados pelos códigos 0x1F e abaixo são codificados e também o caractere 0x7F (caractere de exclusão). A única exceção é que o caractere 0x09 (o caractere de tabulação) não é modificado.
Essa codificação pode ajudar a evitar ataques de injeção que exploram um aplicativo que ecoa dados não confiáveis contidos no cabeçalho.
Observação
Essa propriedade não se aplica à própria linha de status (código de status e descrição de status), mas deve ser aplicada a outros cabeçalhos. Embora <httpRuntime> possa ser definido em qualquer nível, essa propriedade só é aplicável no nível do computador e do aplicativo.
Quando essa propriedade é true
, que é o padrão, os \r
caracteres ou \n
encontrados em um cabeçalho de resposta são codificados para %0d
e %0a
. Isso derrota os ataques de injeção de cabeçalho tornando o material injetado parte da mesma linha de cabeçalho. Isso pode interromper a resposta, mas não deve abrir vetores de ataque contra o cliente. No entanto, ecoar dados não confiáveis nunca é uma boa ideia em qualquer situação.
Importante
As continuações de cabeçalho HTTP dependem de cabeçalhos que abrangem várias linhas e exigem novas linhas nelas. Caso precise usar continuações de cabeçalho, defina a propriedade EnableHeaderChecking como false
. Como há um impacto no desempenho ao examinar cabeçalhos, se você tiver certeza de que já está fazendo as verificações corretas, desativar esse recurso pode melhorar o desempenho do aplicativo. Antes de desabilitar esse recurso, verifique se você já está tomando as precauções certas nesta área.