CA5404: Inaktivera inte tokenverifieringskontroller
Property | Värde |
---|---|
Regel-ID | CA5404 |
Title | Inaktivera inte tokenverifieringskontroller |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
Ange TokenValidationParameters egenskaper RequireExpirationTime
, ValidateAudience
, ValidateIssuer
eller ValidateLifetime
till false
.
Regelbeskrivning
Valideringskontroller av token säkerställer att alla aspekter analyseras och verifieras när token verifieras. Om du inaktiverar valideringen kan det leda till säkerhetshål genom att tillåta obetrodda token att göra det genom validering.
Mer information om metodtips för tokenverifiering finns på bibliotekets wiki.
Så här åtgärdar du överträdelser
Ange TokenValidationParameters egenskaper RequireExpirationTime
, ValidateAudience
, ValidateIssuer
eller ValidateLifetime
till true
. Eller ta bort tilldelningen till false
eftersom standardvärdet är true
.
När du ska ignorera varningar
I de allra flesta fall är den här valideringen nödvändig för att säkerställa säkerheten för den förbrukande appen. Det finns dock vissa fall där den här valideringen inte behövs, särskilt i tokentyper som inte är av standardtyp. 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 CA5404
// The code that's violating the rule is on this line.
#pragma warning restore CA5404
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.CA5404.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Exempel på pseudokod
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;
}
}
Lösning
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;
}
}