Share via


CA5404: Inaktivera inte tokenverifieringskontroller

Property Värde
Regel-ID CA5404
Rubrik Inaktivera inte tokenverifieringskontroller
Kategori Säkerhet
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Nej

Orsak

Ange TokenValidationParameters egenskaper RequireExpirationTime, ValidateAudience, ValidateIssuereller 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, ValidateIssuereller 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;
    }
}