CA5398: Hardcoded SslProtocols-waarden vermijden
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA5398 |
Titel | Hardcoded SslProtocols-waarden voorkomen |
Categorie | Beveiliging |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Nee |
Oorzaak
Deze regel wordt geactiveerd wanneer aan een van de volgende voorwaarden wordt voldaan:
- Er wordt verwezen naar een veilige maar vastgelegde System.Security.Authentication.SslProtocols waarde.
- Een geheel getal dat een veilige protocolversie vertegenwoordigt, is toegewezen aan een SslProtocols variabele, gebruikt als retourwaarde SslProtocols of gebruikt als argument SslProtocols .
Veilige waarden zijn:
- Tls12
- Tls13
Beschrijving van regel
Transport Layer Security (TLS) beveiligt de communicatie tussen computers, meestal met Hypertext Transfer Protocol Secure (HTTPS). Protocolversies TLS 1.0 en TLS 1.1 zijn afgeschaft, terwijl TLS 1.2 en TLS 1.3 actueel zijn. In de toekomst zijn TLS 1.2 en TLS 1.3 mogelijk afgeschaft. Om ervoor te zorgen dat uw toepassing veilig blijft, vermijdt u het coderen van een protocolversie. Zie best practices voor Transport Layer Security (TLS) met .NET Framework voor meer informatie.
Schendingen oplossen
Codeer geen TLS-protocolversies.
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing te onderdrukken als u verbinding wilt maken met een verouderde service die niet kan worden bijgewerkt om toekomstige TLS-protocolversies te kunnen gebruiken.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA5398
// The code that's violating the rule is on this line.
#pragma warning restore CA5398
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA5398.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.
Voorbeelden van pseudocode
Schending van opsommingsnaam
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
Schending van gehele waarde
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
Oplossing
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
Gerelateerde regels
CA5364: gebruik geen afgeschafte beveiligingsprotocollen