Delen via


CA5364: gebruik geen afgeschafte beveiligingsprotocollen

Eigenschap Waarde
Regel-id CA5364
Titel Gebruik geen afgeschafte beveiligingsprotocollen
Categorie Beveiliging
Fix kan brekend of niet-brekend zijn Niet-brekend
Standaard ingeschakeld in .NET 10 Nee
Toepasselijke talen C# en Visual Basic

Oorzaak

Deze regel wordt geactiveerd wanneer aan een van de volgende voorwaarden wordt voldaan:

Afgeschafte waarden zijn:

  • Ssl3
  • TLS
  • Tls10
  • Tls11

Beschrijving van regel

Transport Layer Security (TLS) beveiligt de communicatie tussen computers, meestal met Hypertext Transfer Protocol Secure (HTTPS). Oudere protocolversies van TLS zijn minder veilig dan TLS 1.2 en TLS 1.3 en hebben waarschijnlijk nieuwe beveiligingsproblemen. Vermijd oudere protocolversies om het risico te minimaliseren. Zie Het oplossen van het TLS 1.0-probleem, de 2e editie, voor hulp bij het identificeren en verwijderen van afgeschafte protocolversies.

Hoe schendingen op te lossen

Gebruik geen afgeschafte TLS-protocolversies.

Wanneer waarschuwingen onderdrukken

U kunt deze waarschuwing onderdrukken als:

  • De verwijzing naar de afgeschafte protocolversie wordt niet gebruikt om een afgeschafte versie in te schakelen.
  • U moet verbinding maken met een verouderde service die niet kan worden bijgewerkt voor het gebruik van beveiligde TLS-configuraties.

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 CA5364
// The code that's violating the rule is on this line.
#pragma warning restore CA5364

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.CA5364.severity = none

Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.

Voorbeelden van pseudocode

Schending van enumeratienaam

using System;
using System.Net;

public class ExampleClass
{
    public void ExampleMethod()
    {
        // CA5364 violation
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
    }
}
Imports System
Imports System.Net

Public Class TestClass
    Public Sub ExampleMethod()
        ' CA5364 violation
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12
    End Sub
End Class

Schending van integerwaarde

using System;
using System.Net;

public class ExampleClass
{
    public void ExampleMethod()
    {
        // CA5364 violation
        ServicePointManager.SecurityProtocol = (SecurityProtocolType) 768;    // TLS 1.1
    }
}
Imports System
Imports System.Net

Public Class TestClass
    Public Sub ExampleMethod()
        ' CA5364 violation
        ServicePointManager.SecurityProtocol = CType(768, SecurityProtocolType)   ' TLS 1.1
    End Sub
End Class

Oplossing

using System;
using System.Net;

public class TestClass
{
    public void TestMethod()
    {
        // Let the operating system decide what TLS protocol version to use.
        // See https://dori-uw-1.kuma-moon.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://dori-uw-1.kuma-moon.com/dotnet/framework/network-programming/tls
    End Sub
End Class

CA5386: Voorkom het hardcoderen van de waarde van SecurityProtocolType

CA5397: gebruik geen afgeschafte SslProtocols-waarden

CA5398: Hardcoded SslProtocols-waarden vermijden