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, která může být destruktivní nebo nedestruktivní | Nezlomitelný |
| Povoleno ve výchozím nastavení v .NET 10 | Ne |
| Příslušné jazyky | C# a Visual Basic |
Příčina
Zpětné volání přiřazené AudienceValidator nebo LifetimeValidator vždy vrátí true.
Popis pravidla
Nastavením kritických TokenValidationParameter delegátů pro validaci, 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, aby nevedla všechna větvení kódu k návratu
true, což by fakticky deaktivovalo tento typ ověřování. - Vyvolejte
SecurityTokenInvalidAudienceExceptionneboSecurityTokenInvalidLifetimeExceptionv případech selhání, pokud chcete, aby ověření selhalo, a jiné případy prošly 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 wiki 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;
};
}
}