CA5405: Tokenvalidierung in Delegaten nicht immer überspringen
Eigenschaft | Wert |
---|---|
Regel-ID | CA5405 |
Titel | Tokenvalidierung in Delegaten nicht immer überspringen |
Kategorie | Security |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig in .NET 9 aktiviert | No |
Ursache
Der AudienceValidator oder LifetimeValidator zugewiesene Rückruf gibt immer true
zurück.
Regelbeschreibung
Indem kritische TokenValidationParameter
-Validierungsdelegate so eingestellt werden, dass sie immer true
zurückgeben, werden wichtige Authentifizierungssicherungen deaktiviert. Das Deaktivieren von Sicherheitsvorkehrungen kann zu einer falschen Validierung der Token von Ausstellern oder abgelaufenen Token führen.
Weitere Informationen über bewährte Praktiken für die Token-Validierung finden Sie im Wiki der Bibliothek.
Behandeln von Verstößen
- Verbessern Sie die Logik des Delegaten so, dass nicht alle Codepfade
true
zurückgeben werden, sodass diese Art der Validierung effektiv deaktiviert wird. - Verwerfen Sie
SecurityTokenInvalidAudienceException
oderSecurityTokenInvalidLifetimeException
, wenn Sie die Validierung fehlschlagen soll und Sie andere Fälle durch Rückgabe vontrue
behalten möchten.
Wann sollten Warnungen unterdrückt werden?
Wenn Sie in bestimmten Fällen den Delegaten für die zusätzliche Protokollierung und für Tokentypen verwenden, bei denen der spezifische Validierungstyp nicht erforderlich ist, kann es sinnvoll sein, diese Warnung zu unterdrücken. Stellen Sie vor der Deaktivierung dieser Überprüfung sicher, dass Sie die Auswirkungen auf die Sicherheit vollständig durchdacht haben. Informationen zu den Kompromissen finden Sie im Wiki der Token-Validierungsbibliothek.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA5405
// The code that's violating the rule is on this line.
#pragma warning restore CA5405
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none
fest.
[*.{cs,vb}]
dotnet_diagnostic.CA5405.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.
Pseudocodebeispiele
Verletzung
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) => { return true; };
}
}
Lösung
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;
};
}
}