CA5404: no deshabilitar las comprobaciones de validación de tokens

Propiedad Value
Identificador de la regla CA5404
Título No deshabilitar comprobaciones de validación de tokens
Categoría Seguridad
La corrección interrumpe o no interrumpe Poco problemático
Habilitado de forma predeterminada en .NET 8 No

Causa

Establecer las propiedades de TokenValidationParametersRequireExpirationTime, ValidateAudience, ValidateIssuer o ValidateLifetime en false.

Descripción de la regla

Las comprobaciones de validación de tokens garantizan que, al validar los tokens, todos los aspectos se analizan y comprueban. Desactivar la validación puede provocar vulnerabilidades de seguridad al permitir que los tokens que no son de confianza lo hagan mediante la validación.

Se pueden encontrar más detalles sobre los procedimientos recomendados para la validación de tokens en la wiki de la biblioteca.

Cómo corregir infracciones

Establezca las propiedades de TokenValidationParametersRequireExpirationTime, ValidateAudience, ValidateIssuer o ValidateLifetime en true. O bien, quite la asignación a false porque el valor predeterminado es true.

Cuándo suprimir las advertencias

En la gran mayoría de los casos, esta validación es esencial para garantizar la seguridad de la aplicación que lo consume. Sin embargo, hay algunos casos en los que esta validación no es necesaria, especialmente en los tipos de token que no son estándar. Antes de deshabilitar esta validación, asegúrese de que ha pensado a fondo en las implicaciones de seguridad. Para obtener información sobre las contrapartidas, vea la wiki de la biblioteca de validación de tokens.

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 CA5404
// The code that's violating the rule is on this line.
#pragma warning restore CA5404

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.CA5404.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 Microsoft.IdentityModel.Tokens;

class TestClass
{
    public void TestMethod()
    {
        TokenValidationParameters parameters = new TokenValidationParameters();
        parameters.RequireExpirationTime = false;
        parameters.ValidateAudience = false;
        parameters.ValidateIssuer = false;
        parameters.ValidateLifetime = false;
    }
}

Solución

using System;
using Microsoft.IdentityModel.Tokens;

class TestClass
{
    public void TestMethod()
    {
        TokenValidationParameters parameters = new TokenValidationParameters();
        parameters.RequireExpirationTime = true;
        parameters.ValidateAudience = true;
        parameters.ValidateIssuer = true;
        parameters.ValidateLifetime = true;
    }
}