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
, , ValidateIssuer
ValidateAudience
, 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
, , ValidateIssuer
ValidateAudience
nebo ValidateLifetime
na true
hodnotu . 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;
}
}