CA5358: Non usare modalità di crittografia non sicure
Proprietà | valore |
---|---|
ID regola | CA5358 |
Title | Non usare modalità crittografia non sicure |
Categoria | Sicurezza |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | No |
Causa
Utilizzo di una delle modalità di crittografia unsafe seguenti non approvate:
- System.Security.Cryptography.CipherMode.ECB
- System.Security.Cryptography.CipherMode.OFB
- System.Security.Cryptography.CipherMode.CFB
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
- Usare solo le modalità approvate (System.Security.Cryptography.CipherMode.CBC, System.Security.Cryptography.CipherMode.CTS).
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
};
}
}