Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA5403 |
Cím | Ne használjuk a kemény kódú tanúsítványt |
Kategória | Biztonság |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 9-ben | Nem |
Ok
Egy data
vagy rawData
több konstruktor vagy X509Certificate konstruktor paraméterét X509Certificate2 az alábbiak egyike határozza meg:
- Bájttömb.
- Karaktertömb.
- System.Convert.FromBase64String(String).
- Minden túlterhelése System.Text.Encoding.GetBytes.
Szabály leírása
A merevlemezes tanúsítvány titkos kulcsa könnyen felderíthető. A kártékony felhasználók még lefordított bináris fájlok esetén is könnyen kinyerhetik a kemény kóddal ellátott tanúsítvány titkos kulcsát. A titkos kulcs feltörése után a támadó megszemélyesítheti ezt a tanúsítványt, és a tanúsítvány által védett erőforrások és műveletek a támadó rendelkezésére állnak.
Szabálysértések kijavítása
- Fontolja meg az alkalmazás újratervezését egy biztonságos kulcskezelő rendszer, például az Azure Key Vault használatára.
- A hitelesítő adatokat és a tanúsítványokat a forráskódtól elkülönítve, biztonságos helyen tárolhatja.
Mikor kell letiltani a figyelmeztetéseket?
A szabály figyelmeztetését nyugodtan letilthatja, ha a rögzített adatok nem tartalmazzák a tanúsítvány titkos kulcsát. Az adatok például egy .cer
fájlból származnak. A nyilvános tanúsítványadatok kemény kódolása továbbra is kihívást jelenthet a tanúsítványok elévülése vagy visszavonása esetén.
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA5403
// The code that's violating the rule is on this line.
#pragma warning restore CA5403
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none
a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA5403.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Példák pszeudokódokra
Bájttömb által kódolt, keményen kódolt
using System.IO;
using System.Security.Cryptography.X509Certificates;
class ExampleClass
{
public void ExampleMethod(string path)
{
byte[] bytes = new byte[] {1, 2, 3};
File.WriteAllBytes(path, bytes);
new X509Certificate2(path);
}
}
Karaktertömb által keményen kódolt
using System.IO;
using System.Security.Cryptography.X509Certificates;
using System.Text;
class ExampleClass
{
public void ExampleMethod(byte[] bytes, string path)
{
char[] chars = new char[] { '1', '2', '3' };
Encoding.ASCII.GetBytes(chars, 0, 3, bytes, 0);
File.WriteAllBytes(path, bytes);
new X509Certificate2(path);
}
}
A FromBase64String által keményen kódolt
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
class ExampleClass
{
public void ExampleMethod(string path)
{
byte[] bytes = Convert.FromBase64String("AAAAAaazaoensuth");
File.WriteAllBytes(path, bytes);
new X509Certificate2(path);
}
}
A GetBytes által keményen kódolt
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using System.Text;
class ExampleClass
{
public void ExampleMethod(string path)
{
byte[] bytes = Encoding.ASCII.GetBytes("AAAAAaazaoensuth");
File.WriteAllBytes(path, bytes);
new X509Certificate2(path);
}
}
Megoldás
using System.IO;
using System.Security.Cryptography.X509Certificates;
class ExampleClass
{
public void ExampleMethod(string path)
{
new X509Certificate2("Certificate.cer");
}
}