CA5397: Använd inte inaktuella SslProtocols-värden
Property | Värde |
---|---|
Regel-ID | CA5397 |
Title | Använd inte inaktuella SslProtocols-värden |
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 inaktuellt System.Security.Authentication.SslProtocols värde refererades till.
- Ett heltalsvärde som representerar ett inaktuellt värde tilldelades antingen till en SslProtocols variabel, användes som ett SslProtocols returvärde eller användes som ett SslProtocols argument.
Inaktuella värden är:
- Ssl2
- Ssl3
- Tls
- Tls10
- Tls11
Regelbeskrivning
Transport Layer Security (TLS) skyddar kommunikationen mellan datorer, oftast med Hypertext Transfer Protocol Secure (HTTPS). Äldre protokollversioner av TLS är mindre säkra än TLS 1.2 och TLS 1.3 och är mer benägna att ha nya säkerhetsrisker. Undvik äldre protokollversioner för att minimera risken. Information om hur du identifierar och tar bort inaktuella protokollversioner finns i Lösa TLS 1.0-problemet, andra utgåvan.
Så här åtgärdar du överträdelser
Använd inte inaktuella TLS-protokollversioner.
När du ska ignorera varningar
Du kan ignorera den här varningen om:
- Referensen till den inaktuella protokollversionen används inte för att aktivera en inaktuell version.
- Du måste ansluta till en äldre tjänst som inte kan uppgraderas för att använda säkra TLS-konfigurationer.
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 CA5397
// The code that's violating the rule is on this line.
#pragma warning restore CA5397
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.CA5397.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Exempel på pseudokod
Brott mot uppräkningsnamn
using System;
using System.Security.Authentication;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5397 violation for using Tls11
SslProtocols protocols = SslProtocols.Tls11 | SslProtocols.Tls12;
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Sub ExampleMethod()
' CA5397 violation for using Tls11
Dim sslProtocols As SslProtocols = SslProtocols.Tls11 Or SslProtocols.Tls12
End Sub
End Class
Överträdelse av heltalsvärde
using System;
using System.Security.Authentication;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5397 violation
SslProtocols sslProtocols = (SslProtocols) 768; // TLS 1.1
}
}
Imports System
Imports System.Security.Authentication
Public Class TestClass
Public Sub ExampleMethod()
' CA5397 violation
Dim sslProtocols As SslProtocols = CType(768, SslProtocols) ' TLS 1.1
End Sub
End Class
Lösning
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
Relaterade regler
CA5364: Använd inte inaktuella säkerhetsprotokoll