Share via


CA5358: Använd inte osäkra chifferlägen

Property Värde
Regel-ID CA5358
Rubrik Använd inte osäkra chifferlägen
Kategori Säkerhet
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Nej

Orsak

Använd något av följande osäkra krypteringslägen som inte är godkända:

Regelbeskrivning

Dessa lägen är sårbara för attacker och kan orsaka exponering av känslig information. Om du till exempel använder ECB för att kryptera ett oformaterat block skapas alltid samma chiffertext, så att den enkelt kan se om två krypterade meddelanden är identiska. Om du använder godkända lägen kan du undvika dessa onödiga risker.

Så här åtgärdar du överträdelser

När du ska ignorera varningar

Det är säkert att ignorera en varning från den här regeln om:

  • Kryptografiexperter har granskat och godkänt chifferlägets användning.
  • Den refererade CipherMode används inte för en kryptografisk åtgärd.

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

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

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

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

Mer information finns i Så här utelämnar du kodanalysvarningar.

Exempel på pseudokod

Tilldela ECB till lägesegenskap

using System.Security.Cryptography;

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

Använda värdet ECB

using System;
using System.Security.Cryptography;

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

Lösning

using System.Security.Cryptography;

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