CA5404: Nezakazujte kontroly ověření tokenu

Vlastnost Hodnota
ID pravidla CA5404
Název Nezakazujte kontroly ověření tokenu.
Kategorie Zabezpečení
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 8 No

Příčina

Nastavení TokenValidationParameters vlastností RequireExpirationTime, , ValidateIssuerValidateAudience, nebo ValidateLifetime do false.

Popis pravidla

Kontroly ověření tokenů zajišťují, že při ověřování tokenů se analyzují a ověřují všechny aspekty. Vypnutí ověřování může vést k bezpečnostním otvorům tím, že umožňuje nedůvěryhodným tokenům provádět ověřování.

Další podrobnosti o osvědčených postupech pro ověřování tokenů najdete na wikiwebu knihovny.

Jak opravit porušení

Nastavení TokenValidationParameters vlastností RequireExpirationTime, , ValidateIssuerValidateAudiencenebo ValidateLifetime na truehodnotu . Nebo odeberte přiřazení false , protože výchozí hodnota je true.

Kdy potlačit upozornění

Ve většině případů je toto ověření nezbytné k zajištění zabezpečení aplikace, která využívá. V některých případech však toto ověřování není potřeba, zejména v nestandardních typech tokenů. Než toto ověření zakážete, ujistěte se, že jste plně promysleli důsledky zabezpečení. Informace o kompromisech najdete na wikiwebu knihovny ověřování tokenů.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

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

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Příklady pseudokódu

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

Řešení

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