Share via


CA5358: Geen onveilige coderingsmodi gebruiken

Eigenschappen Weergegeven als
Regel-id CA5358
Titel Onveilige coderingsmodi niet gebruiken
Categorie Beveiliging
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 8 Nee

Oorzaak

Gebruik van een van de volgende onveilige versleutelingsmodi die niet zijn goedgekeurd:

Beschrijving van regel

Deze modi zijn kwetsbaar voor aanvallen en kunnen leiden tot blootstelling van gevoelige informatie. Als u ECB bijvoorbeeld een blok zonder opmaak wilt versleutelen, wordt altijd dezelfde coderingstekst geproduceerd, zodat u gemakkelijk kunt zien of twee versleutelde berichten identiek zijn. Het gebruik van goedgekeurde modi kan deze onnodige risico's voorkomen.

Schendingen oplossen

Wanneer waarschuwingen onderdrukken

Het is veilig om een waarschuwing van deze regel te onderdrukken als:

  • Cryptografie-experts hebben het gebruik van de coderingsmodus beoordeeld en goedgekeurd.
  • Waarnaar wordt verwezen CipherMode , wordt niet gebruikt voor een cryptografische bewerking.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

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

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Voorbeelden van pseudocode

ECB toewijzen aan mode-eigenschap

using System.Security.Cryptography;

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

De waarde ECB gebruiken

using System;
using System.Security.Cryptography;

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

Oplossing

using System.Security.Cryptography;

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