Megosztás a következőn keresztül:


CA5397: Ne használjon elavult SslProtocols-értékeket

Tulajdonság Érték
Szabályazonosító CA5397
Cím Ne használjon elavult SslProtocols-értékeket
Kategória Biztonság
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

Ez a szabály akkor aktiválódik, ha a következő feltételek valamelyike teljesül:

Az elavult értékek a következők:

  • Ssl2
  • Ssl3
  • Tls
  • Tls10
  • Tls11

Szabály leírása

A Transport Layer Security (TLS) biztosítja a számítógépek közötti kommunikációt, leggyakrabban a Hypertext Transfer Protocol Secure (HTTPS) használatával. A TLS régebbi protokollverziói kevésbé biztonságosak, mint a TLS 1.2 és a TLS 1.3, és nagyobb valószínűséggel vannak új biztonsági rések. A kockázat csökkentése érdekében kerülje a régebbi protokollverziókat. Az elavult protokollverziók azonosításával és eltávolításával kapcsolatos útmutatásért tekintse meg a TLS 1.0 probléma 2. kiadásának megoldását.

Szabálysértések kijavítása

Ne használjon elavult TLS protokollverziókat.

Mikor kell letiltani a figyelmeztetéseket?

Ezt a figyelmeztetést a következő esetekben tilthatja le:

  • Az elavult protokollverzióra való hivatkozás nem használható az elavult verzió engedélyezéséhez.
  • Olyan régi szolgáltatáshoz kell csatlakoznia, amely nem frissíthető biztonságos TLS-konfigurációk használatához.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA5397
// The code that's violating the rule is on this line.
#pragma warning restore CA5397

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA5397.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.

Példák pszeudokódokra

Számbavételi név megsértése

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

Egész szám értékének megsértése

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

Megoldás

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

CA5364: Ne használjon elavult biztonsági protokollokat

CA5386: A SecurityProtocolType érték korlátozásának elkerülése

CA5398: A merevlemezes SslProtocols értékek elkerülése