CA5358: Non usare modalità di crittografia non sicure

Proprietà valore
ID regola CA5358
Titolo Non usare modalità crittografia non sicure
Categoria Sicurezza
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 No

Causa

Utilizzo di una delle modalità di crittografia unsafe seguenti non approvate:

Descrizione regola

Queste modalità sono vulnerabili agli attacchi e possono causare l'esposizione di informazioni riservate. Ad esempio, l'uso ECB di per crittografare un blocco di testo non crittografato produce sempre lo stesso testo crittografato, quindi può facilmente indicare se due messaggi crittografati sono identici. L'uso di modalità approvate può evitare questi rischi non necessari.

Come correggere le violazioni

Quando eliminare gli avvisi

È possibile eliminare un avviso da questa regola se:

  • Gli esperti di crittografia hanno esaminato e approvato l'utilizzo della modalità di crittografia.
  • L'oggetto a cui viene fatto CipherMode riferimento non viene usato per un'operazione di crittografia.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Esempi di pseudo-codice

Assegnare LA BCE alla proprietà Mode

using System.Security.Cryptography;

class ExampleClass {
    private static void ExampleMethod () {
        RijndaelManaged rijn = new RijndaelManaged
        {
            Mode = CipherMode.ECB
        };
    }
}

Utilizzo del valore DELLA BCE

using System;
using System.Security.Cryptography;

class ExampleClass
{
    private static void ExampleMethod()
    {
        Console.WriteLine(CipherMode.ECB);
    }
}

Soluzione

using System.Security.Cryptography;

class ExampleClass {
    private static void ExampleMethod () {
        RijndaelManaged rijn = new RijndaelManaged
        {
            Mode = CipherMode.CBC
        };
    }
}