CA5404: Não desative as verificações de validação de token
Propriedade | valor |
---|---|
ID da regra | CA5404 |
Cargo | Não desative as verificações de validação de token |
Categoria | Segurança |
A correção está quebrando ou não quebrando | Sem quebra |
Habilitado por padrão no .NET 8 | Não |
Causa
Definindo TokenValidationParameters propriedades RequireExpirationTime
, , , ValidateIssuer
ValidateAudience
ou ValidateLifetime
para false
.
Descrição da regra
As verificações de validação de tokens garantem que, ao validar tokens, todos os aspetos sejam analisados e verificados. Desativar a validação pode levar a falhas de segurança, permitindo que tokens não confiáveis passem pela validação.
Mais detalhes sobre as melhores práticas para validação de token podem ser encontrados no wiki da biblioteca.
Como corrigir violações
Defina TokenValidationParameters as propriedades RequireExpirationTime
, , ValidateAudience
ValidateIssuer
ou ValidateLifetime
como true
. Ou remova a atribuição para false
porque o valor padrão é true
.
Quando suprimir avisos
Na grande maioria dos casos, essa validação é essencial para garantir a segurança do aplicativo consumidor. No entanto, há alguns casos em que essa validação não é necessária, especialmente em tipos de token não padrão. Antes de desativar essa validação, certifique-se de ter pensado completamente nas implicações de segurança. Para obter informações sobre as compensações, consulte o wiki da biblioteca de validação de token.
Suprimir um aviso
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.
#pragma warning disable CA5404
// The code that's violating the rule is on this line.
#pragma warning restore CA5404
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA5404.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.
Exemplos 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;
}
}
Solução
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;
}
}