Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA5405 |
| Başlık | Temsilcilerde belirteç doğrulamayı her zaman atlamayın |
| Kategori | Güvenlik |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Hayır |
| Geçerli diller | C# ve Visual Basic |
Neden
AudienceValidator veya LifetimeValidator öğesine atanan geri çağırma fonksiyonu her zaman true döndürür.
Kural açıklaması
Kritik TokenValidationParameter doğrulama temsilcilerini her zaman true dönecek şekilde ayarlayarak, önemli kimlik doğrulama korumaları devre dışı bırakılır. Koruma önlemlerinin devre dışı bırakılması, herhangi bir sağlayıcıdan gelen veya süresi dolmuş jetonların hatalı doğrulanmasına neden olabilir.
Belirteç doğrulamaya yönelik en iyi yöntemler hakkında daha fazla bilgi için kitaplığın wiki'sine bakın.
İhlalleri düzeltme
- Temsilcinin mantığını geliştirerek tüm kod yollarının
truedöndürmesini ve bu tür doğrulamayı etkin bir şekilde devre dışı bırakmasını önleyin. - Başarısızlık durumlarında
SecurityTokenInvalidAudienceExceptionveyaSecurityTokenInvalidLifetimeExceptionfırlatın ve diğer durumlarıntruedöndürerek geçmesini sağlayın.
Uyarıların ne zaman bastırılması gerekiyor?
Bazı özel durumlarda, temsilciyi ek günlük kaydı amacıyla kullanıyorsanız ve belirli bir doğrulama türüne ihtiyaç duyulmayan belirteç türleri söz konusuysa, bu uyarıyı bastırmanız mantıklı olabilir. Bu doğrulamayı devre dışı bırakmadan önce, güvenlik etkilerini tam olarak düşündüğünüzden emin olun. Dengeler hakkında bilgi için token doğrulama kitaplığının wiki'sine bakın.
Uyarıyı gizleme
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA5405
// The code that's violating the rule is on this line.
#pragma warning restore CA5405
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA5405.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Sahte kod örnekleri
Ihlal
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.AudienceValidator = (audiences, token, tvp) => { return true; };
}
}
Çözüm
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;
};
}
}