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
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 8'de varsayılan olarak etkin Hayır

Neden

öğesine atanan AudienceValidator veya LifetimeValidator her zaman geri çağırma döndürür true.

Kural açıklaması

Kritik TokenValidationParameter doğrulama temsilcilerini her zaman döndürecek trueşekilde ayarlayarak, önemli kimlik doğrulama korumaları devre dışı bırakılır. Korumaların devre dışı bırakılması, herhangi bir verenden veya süresi dolan belirteçlerden belirteçlerin yanlış 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 döndürmemesi trueve bu tür doğrulamayı etkin bir şekilde devre dışı bırakması.
  • Doğrulamanın başarısız olmasını ve diğer servis taleplerinin döndürerek truegeçirilmesini istediğinizde oluşturma SecurityTokenInvalidAudienceException veya SecurityTokenInvalidLifetimeException hata durumlarında.

Uyarıların ne zaman bastırılması gerekiyor?

Temsilciyi ek günlük kaydı için kullandığınız ve belirli bir doğrulama türünün gerekli olmadığı belirteç türleri için kullandığınız bazı durumlarda, bu uyarıyı gizlemeniz 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 belirteç 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;
        };
    }
}