Condividi tramite


CA5404: Non disabilitare i controlli di convalida dei token

Proprietà valore
ID regola CA5404
Titolo Non disabilitare i controlli di convalida dei token
Categoria Sicurezza
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 No

Causa

Impostazione delle TokenValidationParameters proprietà RequireExpirationTime, ValidateAudience, ValidateIssuero ValidateLifetime su false.

Descrizione regola

I controlli di convalida dei token assicurano che durante la convalida dei token, tutti gli aspetti vengono analizzati e verificati. La disattivazione della convalida può causare problemi di sicurezza consentendo ai token non attendibili di renderlo tramite la convalida.

Altre informazioni sulle procedure consigliate per la convalida dei token sono disponibili nel wiki della libreria.

Come correggere le violazioni

Impostare TokenValidationParameters le proprietà RequireExpirationTime, ValidateAudience, ValidateIssuero ValidateLifetime su true. In alternativa, rimuovere l'assegnazione a false perché il valore predefinito è true.

Quando eliminare gli avvisi

Nella maggior parte dei casi, questa convalida è essenziale per garantire la sicurezza dell'app che usa. Tuttavia, esistono alcuni casi in cui questa convalida non è necessaria, in particolare nei tipi di token non standard. Prima di disabilitare questa convalida, assicurarsi di aver esaminato appieno le implicazioni per la sicurezza. Per informazioni sui compromessi, vedere il wiki della libreria di convalida dei token.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

#pragma warning disable CA5404
// The code that's violating the rule is on this line.
#pragma warning restore CA5404

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

[*.{cs,vb}]
dotnet_diagnostic.CA5404.severity = none

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Esempi di pseudo-codice

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

Soluzione

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