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 9 | Nee |
Oorzaak
Gebruik van een van de volgende onveilige versleutelingsmodi die niet zijn goedgekeurd:
- System.Security.Cryptography.CipherMode.ECB
- System.Security.Cryptography.CipherMode.OFB
- System.Security.Cryptography.CipherMode.CFB
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
- Gebruik alleen goedgekeurde modi (System.Security.Cryptography.CipherMode.CBC, System.Security.Cryptography.CipherMode.CTS).
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
};
}
}