Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Eigenschap | Waarde |
|---|---|
| Regel-id | CA5402 |
| Titel | CreateEncryptor gebruiken met de standaard IV |
| Categorie | Beveiliging |
| Fix kan brekend of niet-brekend zijn | Niet-brekend |
| Standaard ingeschakeld in .NET 10 | Nee |
| Toepasselijke talen | C# en Visual Basic |
Oorzaak
De rgbIV waarde kan niet standaard zijn wanneer System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor wordt gebruikt.
Beschrijving van regel
Symmetrische versleuteling moet altijd een niet-herhaalbare initialisatievector gebruiken om woordenlijstaanvallen te voorkomen.
Deze regel is vergelijkbaar met CA5401, maar analyse kan niet bepalen dat de initialisatievector absoluut de standaardwaarde is.
Hoe schendingen op te lossen
Gebruik de standaardwaarde rgbIV expliciet, dat wil gezegd, gebruik de overbelasting van de System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor waarde die geen parameter heeft.
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing van deze regel te onderdrukken als:
- De
rgbIVparameter is gegenereerd door System.Security.Cryptography.SymmetricAlgorithm.GenerateIV. - U weet zeker dat de
rgbIVparameter echt willekeurig en niet herhaalbaar is. - U weet zeker dat de initialisatievector wordt gebruikt.
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 CA5402
// The code that's violating the rule is on this line.
#pragma warning restore CA5402
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.CA5402.severity = none
Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.
Voorbeelden van pseudocode
using System;
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod(byte[] rgbIV)
{
AesCng aesCng = new AesCng();
Random r = new Random();
if (r.Next(6) == 4)
{
aesCng.IV = rgbIV;
}
aesCng.CreateEncryptor();
}
}
Oplossing
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod()
{
AesCng aesCng = new AesCng();
aesCng.CreateEncryptor();
}
}