CA5365: No deshabilitar la comprobación de encabezados HTTP
Propiedad | Value |
---|---|
Identificador de la regla | CA5365 |
Título | No deshabilitar la comprobación de encabezados HTTP |
Categoría | Seguridad |
La corrección interrumpe o no interrumpe | Poco problemático |
Habilitado de forma predeterminada en .NET 8 | No |
Causa
Establezca EnableHeaderChecking en false
.
Descripción de la regla
La comprobación de encabezados HTTP permite codificar el retorno de carro y los caracteres de nueva línea, \r
y \n
, que se encuentran en los encabezados de respuesta. 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.
Cómo corregir infracciones
Establezca EnableHeaderChecking en true
. O bien, quite la asignación a false
porque el valor predeterminado es true
.
Cuándo suprimir las advertencias
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
. La comprobación de los encabezados tiene un impacto en el rendimiento. Está seguro de que ya realiza las comprobaciones correctas, la desactivación de 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.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA5365
// The code that's violating the rule is on this line.
#pragma warning restore CA5365
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA5365.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.
Ejemplos de pseudocódigo
using System;
using System.Web.Configuration;
class TestClass
{
public void TestMethod()
{
HttpRuntimeSection httpRuntimeSection = new HttpRuntimeSection();
httpRuntimeSection.EnableHeaderChecking = false;
}
}
Solución
using System;
using System.Web.Configuration;
class TestClass
{
public void TestMethod()
{
HttpRuntimeSection httpRuntimeSection = new HttpRuntimeSection();
httpRuntimeSection.EnableHeaderChecking = true;
}
}