CA5405: Non ignorare sempre la convalida dei token nei delegati
Proprietà | valore |
---|---|
ID regola | CA5405 |
Title | Non ignorare sempre la convalida dei token nei delegati |
Categoria | Sicurezza |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | No |
Causa
Il callback assegnato a AudienceValidator o LifetimeValidator restituisce true
sempre .
Descrizione regola
Impostando delegati di convalida critici TokenValidationParameter
per restituire true
sempre , le misure di sicurezza importanti per l'autenticazione sono disabilitate. La disabilitazione delle misure di sicurezza può causare una convalida errata dei token da qualsiasi emittente o token scaduto.
Per altre informazioni sulle procedure consigliate per la convalida dei token, vedere il wiki della libreria.
Come correggere le violazioni
- Migliorare la logica del delegato in modo che non tutti i percorsi di codice restituisca
true
, che disabilita in modo efficace tale tipo di convalida. - Generare
SecurityTokenInvalidAudienceException
oSecurityTokenInvalidLifetimeException
in casi di errore quando si desidera non eseguire la convalida e fare in modo che altri casi vengano superati restituendotrue
.
Quando eliminare gli avvisi
In alcuni casi specifici in cui si usa il delegato per la registrazione aggiuntiva ed è per i tipi di token in cui non è necessario il tipo specifico di convalida, può essere opportuno eliminare questo avviso. 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 CA5405
// The code that's violating the rule is on this line.
#pragma warning restore CA5405
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.CA5405.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.
Esempi di pseudo-codice
Violazione
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) => { return true; };
}
}
Soluzione
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) =>
{
// Implement your own custom audience validation
if (PerformCustomAudienceValidation(audiences, token))
return true;
else
return false;
};
}
}