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


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

Tulajdonság Érték
Szabályazonosító CA5386
Cím A SecurityProtocolType érték korlátozásának elkerülése
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 9-ben Nem

Ok

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

A biztonságos értékek a következők:

  • Tls12
  • Tls13

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 1.0 és a TLS 1.1 protokollverzió elavult, míg a TLS 1.2 és a TLS 1.3 aktuális. A jövőben a TLS 1.2 és a TLS 1.3 elavult lehet. Annak érdekében, hogy az alkalmazás biztonságos maradjon, kerülje a protokollverzió keménykódolását, és legalább .NET-keretrendszer 4.7.1-es verziót célozz meg. További információkért lásd a Transport Layer Security (TLS) ajánlott eljárásait .NET-keretrendszer.

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

Ne kódolja a TLS protokollverziókat.

Mikor kell letiltani a figyelmeztetéseket?

Ezt a figyelmeztetést letilthatja, ha az alkalmazás .NET-keretrendszer 4.6.2-s vagy korábbi verziót céloz meg, és olyan számítógépen futhat, amelyen alapértelmezés szerint nem biztonságos.

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

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.CA5386.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.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

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

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

Megoldás

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

CA5364: Ne használjon elavult biztonsági protokollokat

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

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