Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnost | Hodnota |
|---|---|
| ID pravidla | CA5405 |
| Název | Nepřeskakujte vždy ověření tokenu u delegátů. |
| 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 10 | No |
Příčina
Zpětné volání přiřazené AudienceValidator nebo LifetimeValidator vždy vrátí true.
Popis pravidla
Nastavením důležitých TokenValidationParameter delegátů ověřování tak, aby se vždy vracely true, jsou zakázána důležitá bezpečnostní opatření ověřování. Zakázání ochranných opatření může vést k nesprávnému ověření tokenů od jakéhokoli vystavitele nebo tokenů s vypršenou platností.
Další informace o osvědčených postupech pro ověřování tokenů najdete na wikiwebu knihovny.
Jak opravit porušení
- Vylepšete logiku delegáta, takže ne všechny cesty kódu se vrátí
true, což účinně zakáže tento typ ověřování. - Vyvolání
SecurityTokenInvalidAudienceExceptionneboSecurityTokenInvalidLifetimeExceptionv případech selhání, pokud chcete neúspěšné ověření a mají jiné případy průchod vrácenímtrue.
Kdy potlačit upozornění
V některých konkrétních případech, kdy používáte delegáta pro další protokolování a jedná se o typy tokenů, u kterých není potřeba konkrétní typ ověření, může být vhodné toto upozornění potlačit. 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 CA5405
// The code that's violating the rule is on this line.
#pragma warning restore CA5405
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.CA5405.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.
Příklady pseudokódu
Porušení
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) => { return true; };
}
}
Řešení
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) =>
{
// Implement your own custom audience validation
if (PerformCustomAudienceValidation(audiences, token))
return true;
else
return false;
};
}
}