CA5404: Nie wyłączaj sprawdzania poprawności tokenu
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA5404 |
Tytuł | Nie wyłączaj sprawdzania poprawności tokenu |
Kategoria | Bezpieczeństwo |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Nie. |
Przyczyna
Ustawianie TokenValidationParameters właściwości RequireExpirationTime
, , ValidateIssuer
ValidateAudience
lub 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
, ValidateIssuer
lub 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;
}
}