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
, ValidateIssuer
o 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
, ValidateIssuer
o 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;
}
}