Share via


CA5404: Tokenvalidatiecontroles niet uitschakelen

Eigenschappen Weergegeven als
Regel-id CA5404
Titel Tokenvalidatiecontroles niet uitschakelen
Categorie Beveiliging
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 9 Nee

Oorzaak

EigenschappenTokenValidationParameters, ValidateAudience, of ValidateIssuerValidateLifetime op false.RequireExpirationTime

Beschrijving van regel

Controle van tokenvalidatie zorgt ervoor dat tijdens het valideren van tokens alle aspecten worden geanalyseerd en geverifieerd. Het uitschakelen van validatie kan leiden tot beveiligingsgaten door niet-vertrouwde tokens toe te staan deze via validatie te laten doorlopen.

Meer informatie over aanbevolen procedures voor tokenvalidatie vindt u op de wiki van de bibliotheek.

Schendingen oplossen

Eigenschappen instellenTokenValidationParameters, ValidateAudience, of ValidateIssuerValidateLifetime op true.RequireExpirationTime Of verwijder de toewijzing naar false omdat de standaardwaarde is true.

Wanneer waarschuwingen onderdrukken

In de meeste gevallen is deze validatie essentieel om de beveiliging van de verbruikende app te waarborgen. Er zijn echter enkele gevallen waarin deze validatie niet nodig is, met name in niet-standaardtokentypen. Voordat u deze validatie uitschakelt, moet u zeker weten wat de gevolgen voor de beveiliging zijn. Zie de wiki van de tokenvalidatiebibliotheek voor informatie over de afwegingen.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

#pragma warning disable CA5404
// The code that's violating the rule is on this line.
#pragma warning restore CA5404

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

[*.{cs,vb}]
dotnet_diagnostic.CA5404.severity = none

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Voorbeelden van pseudocode

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;
    }
}

Oplossing

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;
    }
}