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 | CA5398 |
| Başlık | Sabit kodlanmış SslProtocols değerlerini kullanmaktan kaçını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
Bu kural, aşağıdaki koşullardan biri karşılandığında tetiklenir:
- Güvenli ancak sabit kodlanmış bir değere System.Security.Authentication.SslProtocols başvuruldu.
- Güvenli bir protokol sürümünü temsil eden bir tamsayı değeri, ya bir SslProtocols değişkene atandı, ya bir SslProtocols dönüş değeri olarak kullanıldı ya da bir SslProtocols bağımsız değişken olarak kullanıldı.
Güvenli değerler şunlardır:
- Tls12
- Tls13
Kural açıklaması
Aktarım Katmanı Güvenliği (TLS), çoğunlukla Köprü Metni Aktarım Protokolü Güvenli (HTTPS) ile bilgisayarlar arasındaki iletişimin güvenliğini sağlar. TlS 1.0 ve TLS 1.1 protokol sürümleri kullanım dışı bırakılmıştır, TLS 1.2 ve TLS 1.3 ise günceldir. Gelecekte TLS 1.2 ve TLS 1.3 kullanım dışı bırakılabilir. Uygulamanızın güvenli kalmasını sağlamak için protokol sürümünü sabit kodlamaktan kaçının. Daha fazla bilgi için bkz . .NET Framework ile Aktarım Katmanı Güvenliği (TLS) en iyi yöntemleri.
İhlalleri düzeltme
TLS protokol sürümlerini sabit kodlamayın.
Uyarıların ne zaman bastırılması gerekiyor?
Gelecekteki TLS protokol sürümlerini kullanmak için yükseltilmeyen eski bir hizmete bağlanmanız gerekiyorsa uyarıyı gizlemeniz güvenlidir.
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 CA5398
// The code that's violating the rule is on this line.
#pragma warning restore CA5398
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.CA5398.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Sahte kod örnekleri
Numaralandırma adı ihlali
using System;
using System.Security.Authentication;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5398 violation
SslProtocols sslProtocols = SslProtocols.Tls12;
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Function ExampleMethod() As SslProtocols
' CA5398 violation
Return SslProtocols.Tls12
End Function
End Class
Tamsayı değeri ihlali
using System;
using System.Security.Authentication;
public class ExampleClass
{
public SslProtocols ExampleMethod()
{
// CA5398 violation
return (SslProtocols) 3072; // TLS 1.2
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Function ExampleMethod() As SslProtocols
' CA5398 violation
Return CType(3072, SslProtocols) ' TLS 1.2
End Function
End Class
Çözüm
using System;
using System.Security.Authentication;
public class TestClass
{
public void Method()
{
// Let the operating system decide what TLS protocol version to use.
// See https://learn.microsoft.com/dotnet/framework/network-programming/tls
SslProtocols sslProtocols = SslProtocols.None;
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Sub ExampleMethod()
' Let the operating system decide what TLS protocol version to use.
' See https://learn.microsoft.com/dotnet/framework/network-programming/tls
Dim sslProtocols As SslProtocols = SslProtocols.None
End Sub
End Class
İlgili kurallar
CA5364: Kullanım dışı bırakılan güvenlik protokollerini kullanmayın
CA5386: SecurityProtocolType değerini sabit kodlamaktan kaçının
CA5397: Kullanım dışı bırakılmış SslProtocols değerlerini kullanmayın