CA5398: Sabit kodlanmış SslProtocols değerlerinden kaçının
Özellik | Değer |
---|---|
Kural Kimliği | CA5398 |
Başlık | Sabit kodlanmış SslProtocols değerlerini kullanmaktan kaçının |
Kategori | Güvenlik |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 8'de varsayılan olarak etkin | Hayır |
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 protokol sürümünü temsil eden bir tamsayı değeri bir SslProtocols değişkene atandı, dönüş değeri olarak SslProtocols kullanıldı veya bağımsız değişken olarak SslProtocols kullanıldı.
Kasa 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 none
olarak 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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin