CA5404: Nie wyłączaj sprawdzania poprawności tokenu

Właściwości Wartość
Identyfikator reguły CA5404
Stanowisko Nie wyłączaj sprawdzania poprawności tokenu
Kategoria Bezpieczeństwo
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Ustawianie TokenValidationParameters właściwości RequireExpirationTime, , ValidateIssuerValidateAudiencelub ValidateLifetime na false.

Opis reguły

Sprawdzanie poprawności tokenu zapewnia, że podczas walidacji tokenów wszystkie aspekty są analizowane i weryfikowane. Wyłączenie walidacji może prowadzić do luk w zabezpieczeniach, umożliwiając niezaufanym tokenom jego weryfikację.

Więcej szczegółowych informacji na temat najlepszych rozwiązań dotyczących walidacji tokenów można znaleźć na stronie wiki biblioteki.

Jak naprawić naruszenia

Ustaw TokenValidationParameters właściwości RequireExpirationTime, ValidateAudience, ValidateIssuerlub ValidateLifetime na true. Możesz też usunąć przypisanie do false , ponieważ wartość domyślna to true.

Kiedy pomijać ostrzeżenia

W zdecydowanej większości przypadków ta weryfikacja jest niezbędna do zapewnienia bezpieczeństwa aplikacji zużywanej. Istnieją jednak pewne przypadki, w których ta weryfikacja nie jest wymagana, zwłaszcza w typach tokenów innych niż standardowe. Przed wyłączeniem tej weryfikacji upewnij się, że zostały one w pełni przemyślane przez implikacje dotyczące zabezpieczeń. Aby uzyskać informacje o kompromisach, zobacz witrynę typu wiki biblioteki weryfikacji tokenów.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Przykłady przykładów kodu przykładowego

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

Rozwiązanie

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