HttpRuntimeSection.EnableHeaderChecking Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece un valor que indica si la comprobación de encabezados 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 de propiedad
Es true
si la comprobación de encabezados está habilitada; en caso contrario, es false
. El valor predeterminado es true
.
- Atributos
Ejemplos
En el ejemplo siguiente se muestra cómo usar la propiedad 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
Comentarios
El propósito de esta propiedad es habilitar la codificación del retorno de carro y los caracteres de nueva línea, \r
y \n
, que se encuentran en los encabezados de respuesta.
En los encabezados de respuesta de salida, los caracteres representados por los códigos 0x1F y siguientes se codifican y también el carácter 0x7F (eliminar carácter). La única excepción es que el carácter 0x09 (el carácter de tabulación) no está modificado.
Esta codificación puede ayudar a evitar ataques de inyección que aprovechan una aplicación que repite datos que no son de confianza contenidos en el encabezado.
Nota
Esta propiedad no se aplica a la propia línea de estado (código de estado y descripción de estado), pero debe aplicarse a otros encabezados. Aunque <httpRuntime> se puede establecer en cualquier nivel, esta propiedad solo se aplica en el nivel de máquina y aplicación.
Cuando esta propiedad es true
, que es el valor predeterminado, los \r
caracteres o \n
que se encuentran en un encabezado de respuesta se codifican %0d
en y %0a
. Esto derrota los ataques por inyección de encabezado haciendo que el material insertado forme parte de la misma línea de encabezado. Esto podría interrumpir la respuesta, pero no debería abrir vectores de ataque en el cliente. La eco de datos que no son de confianza nunca es una buena idea en ninguna situación, sin embargo.
Importante
Las continuaciones de encabezado HTTP se basan en encabezados que abarcan varias líneas y requieren nuevas líneas. Si necesita usar continuaciones de encabezado, debe establecer la propiedad EnableHeaderChecking en false
. Dado que hay un impacto en el rendimiento al examinar los encabezados, si está seguro de que ya está realizando las comprobaciones correctas, desactivar esta característica puede mejorar el rendimiento de la aplicación. Antes de deshabilitar esta característica, asegúrese de que ya está tomando las precauciones adecuadas respecto a este tema.