Share via


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