CA5405: Hoppa inte alltid över tokenverifiering i ombud
Property | Värde |
---|---|
Regel-ID | CA5405 |
Title | Hoppa inte alltid över tokenverifiering i ombud |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
Återanropet som tilldelats till AudienceValidator eller LifetimeValidator returnerar true
alltid .
Regelbeskrivning
Genom att ange att kritiska TokenValidationParameter
verifieringsdelegater alltid ska returnera true
inaktiveras viktiga autentiseringsskydd. Om du inaktiverar skyddsåtgärder kan det leda till felaktig validering av token från alla utfärdare eller förfallna token.
Mer information om metodtips för tokenverifiering finns i bibliotekets wiki.
Så här åtgärdar du överträdelser
- Förbättra logiken för ombudet så att inte alla kodsökvägar returnerar
true
, vilket effektivt inaktiverar den typen av validering. - Kasta
SecurityTokenInvalidAudienceException
ellerSecurityTokenInvalidLifetimeException
i felfall när du vill misslyckas med valideringen och låta andra fall passera genom atttrue
returnera .
När du ska ignorera varningar
I vissa specifika fall där du använder ombudet för ytterligare loggning och det är för tokentyper där den specifika typen av validering inte behövs, kan det vara klokt att ignorera den här varningen. Innan du inaktiverar den här valideringen bör du vara säker på att du har tänkt igenom säkerhetskonsekvenserna fullt ut. Information om kompromisserna finns i wikin för tokenvalideringsbiblioteket.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA5405
// The code that's violating the rule is on this line.
#pragma warning restore CA5405
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA5405.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Exempel på pseudokod
Kränkning
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) => { return true; };
}
}
Lösning
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;
};
}
}