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