CA5386: Undvik hårdkodning av SecurityProtocolType-värde
Property | Värde |
---|---|
Regel-ID | CA5386 |
Title | Undvik hårdkodning av SecurityProtocolType-värde |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
Den här regeln utlöses när något av följande villkor uppfylls:
- Ett säkert men hårdkodat System.Net.SecurityProtocolType värde refererades till.
- Ett heltalsvärde som representerar en säker protokollversion tilldelades en SecurityProtocolType variabel.
Säkra värden är:
- Tls12
- Tls13
Regelbeskrivning
Transport Layer Security (TLS) skyddar kommunikationen mellan datorer, oftast med Hypertext Transfer Protocol Secure (HTTPS). Protokollversionerna TLS 1.0 och TLS 1.1 är inaktuella, medan TLS 1.2 och TLS 1.3 är aktuella. I framtiden kan TLS 1.2 och TLS 1.3 vara inaktuella. Undvik att hårdkoda en protokollversion och rikta in dig på minst .NET Framework v4.7.1 för att säkerställa att programmet förblir säkert. Mer information finns i Metodtips för Transport Layer Security (TLS) med .NET Framework.
Så här åtgärdar du överträdelser
Hårdkoda inte TLS-protokollversioner.
När du ska ignorera varningar
Du kan ignorera den här varningen om ditt program riktar in sig på .NET Framework v4.6.2 eller tidigare och kan köras på en dator som har osäkra standardvärden.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA5386
// The code that's violating the rule is on this line.
#pragma warning restore CA5386
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA5386.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Exempel på pseudokod
Brott mot uppräkningsnamn
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
Överträdelse av heltalsvärde
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
Lösning
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
Relaterade regler
CA5364: Använd inte inaktuella säkerhetsprotokoll