CA5405: Temsilcilerde belirteç doğrulamayı her zaman atlamayın

Ö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 true döndürmesini ve bu tür doğrulamayı etkin bir şekilde devre dışı bırakmasını önleyin.
  • Başarısızlık durumlarında SecurityTokenInvalidAudienceException veya SecurityTokenInvalidLifetimeException fırlatın ve diğer durumların true dö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;
        };
    }
}