CA5404: Token-Validierungsprüfungen nicht deaktivieren
Eigenschaft | Wert |
---|---|
Regel-ID | CA5404 |
Titel | Tokenvalidierungsprüfungen nicht deaktivieren |
Kategorie | Security |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig in .NET 8 aktiviert | Nein |
Ursache
Einstellung der TokenValidationParameters-Eigenschaften RequireExpirationTime
, ValidateAudience
, ValidateIssuer
oder ValidateLifetime
auf false
.
Regelbeschreibung
Tokenvalidierungsprüfungen stellen sicher, dass bei der Überprüfung von Token alle Aspekte analysiert und überprüft werden. Das Deaktivieren der Überprüfung kann zu Sicherheitslücken führen, wenn nicht vertrauenswürdige Token die Überprüfung durchführen können.
Weitere Einzelheiten zu bewährten Verfahren für die Token-Validierung finden Sie auf der Wiki-Seite der Bibliothek.
Behandeln von Verstößen
Setzen Sie die TokenValidationParametersEigenschaften RequireExpirationTime
, ValidateAudience
, ValidateIssuer
oder ValidateLifetime
auf true
. Oder entfernen Sie die Zuweisung für false
, da der Standardwert true
ist.
Wann sollten Warnungen unterdrückt werden?
In den meisten Fällen ist diese Überprüfung unerlässlich, um die Sicherheit der nutzenden App sicherzustellen. Es gibt jedoch einige Fälle, in denen diese Überprüfung nicht erforderlich ist, insbesondere bei nicht standardmäßigen Tokentypen. Stellen Sie vor der Deaktivierung dieser Überprüfung sicher, dass Sie die Auswirkungen auf die Sicherheit vollständig durchdacht haben. Informationen zu den Kompromissen finden Sie im Wiki der Token-Validierungsbibliothek.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA5404
// The code that's violating the rule is on this line.
#pragma warning restore CA5404
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none
fest.
[*.{cs,vb}]
dotnet_diagnostic.CA5404.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.
Pseudocodebeispiele
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ösung
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;
}
}