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 9 | 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;
}
}