Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Właściwości | Wartość |
|---|---|
| Identyfikator reguły | CA5386 |
| Tytuł | Unikaj zapisywania na stałe wartości SecurityProtocolType |
| Kategoria | Bezpieczeństwo |
| Poprawka łamiąca lub nienaruszająca | Niezgodność |
| Domyślnie włączone na platformie .NET 10 | Nie. |
| Zastosowane języki | C# i Visual Basic |
Przyczyna
Ta reguła jest uruchamiana po spełnieniu jednego z następujących warunków:
- Odwołano się do bezpiecznej, ale zakodowanej na stałe wartości System.Net.SecurityProtocolType.
- Wartość całkowita reprezentująca bezpieczną wersję protokołu została przypisana do zmiennej SecurityProtocolType .
Bezpieczne wartości to:
- Tls12
- Tls13
Opis reguły
Protokół Transport Layer Security (TLS) zabezpiecza komunikację między komputerami, najczęściej w połączeniu z protokołem Hypertext Transfer Protocol Secure (HTTPS). Wersje protokołu TLS 1.0 i TLS 1.1 są przestarzałe, a protokoły TLS 1.2 i TLS 1.3 są aktualne. W przyszłości protokoły TLS 1.2 i TLS 1.3 mogą być przestarzałe. Aby upewnić się, że aplikacja pozostaje bezpieczna, należy unikać twardego kodowania wersji protokołu i wybrać jako cel co najmniej wersję 4.7.1 programu .NET Framework. Aby uzyskać więcej informacji, zobacz Najlepsze praktyki dotyczące Transport Layer Security (TLS) w .NET Framework.
Jak naprawić naruszenia
Nie koduj wersji protokołu TLS na stałe.
Kiedy pomijać ostrzeżenia
To ostrzeżenie można pominąć, jeśli aplikacja jest przeznaczona dla programu .NET Framework w wersji 4.6.2 lub starszej i może działać na komputerze z niezabezpieczonymi wartościami domyślnymi.
Pomijanie ostrzeżenia
Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.
#pragma warning disable CA5386
// The code that's violating the rule is on this line.
#pragma warning restore CA5386
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.{cs,vb}]
dotnet_diagnostic.CA5386.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.
Przykłady pseudokodu
Naruszenie nazwy wyliczenia
using System;
using System.Net;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5386 violation
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
}
}
Imports System
Imports System.Net
Public Class TestClass
Public Sub ExampleMethod()
' CA5386 violation
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
End Sub
End Class
Naruszenie wartości całkowitej
using System;
using System.Net;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5386 violation
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072; // TLS 1.2
}
}
Imports System
Imports System.Net
Public Class TestClass
Public Sub ExampleMethod()
' CA5386 violation
ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType) ' TLS 1.2
End Sub
End Class
Rozwiązanie
using System;
using System.Net;
public class TestClass
{
public void TestMethod()
{
// Let the operating system decide what TLS protocol version to use.
// See https://learn.microsoft.com/dotnet/framework/network-programming/tls
}
}
Imports System
Imports System.Net
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
End Sub
End Class
Powiązane reguły
CA5364: Nie używaj przestarzałych protokołów zabezpieczeń