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ó | CA5393 |
| Cím | Ne használjon nem biztonságos DllImportSearchPath értéket |
| Kategória | Biztonság |
| A javítás romboló vagy nem romboló | Nem törhető |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Nem |
| Alkalmazandó nyelvek | C# és Visual Basic |
Ok
Az xref:System.Runtime.InteropServices.DllImportSearchPath?displayProperty=fullName egyik nem biztonságos értékének <használata:
AssemblyDirectoryUseDllDirectoryForDependenciesApplicationDirectoryLegacyBehavior
Szabály leírása
Rosszindulatú DLL lehet az alapértelmezett DLL keresési könyvtárakban és assembly könyvtárakban. Vagy attól függően, hogy honnan futtatja az alkalmazást, az alkalmazás címtárában rosszindulatú DLL is lehet.
További információkért lásd: Kódtár biztonságos betöltése.
Szabálysértések kijavítása
Használjon biztonságos értékeket DllImportSearchPath explicit keresési útvonal megadásához:
SafeDirectoriesSystem32UserDirectories
Mikor kell letiltani a figyelmeztetéseket?
A szabályt nyugodtan letilthatja, ha:
- Biztos abban, hogy a betöltött összeállítás az, amit szeretne.
- Az importált szerelvény egy gyakran használt rendszerszerelvény, például user32.dll, és a keresési útvonal stratégiája az ismert DLL-mechanizmust követi.
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 CA5393
// The code that's violating the rule is on this line.
#pragma warning restore CA5393
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.CA5393.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Kód konfigurálása elemzéshez
A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.
Ezt a beállítást konfigurálhatja csak erre a szabályra, az összes szabályra, vagy az ebben a kategóriában szereplő összes szabályra (Biztonság), amelyekre vonatkozik. További információ: Kódminőségi szabály konfigurációs beállításai.
Nem biztonságos DllImportSearchPath-bitek
Konfigurálhatja, hogy melyik DllImportSearchPath érték nem biztonságos az elemzéshez. Ha például meg szeretné adni, hogy a kód ne használjon AssemblyDirectory, UseDllDirectoryForDependencies vagy ApplicationDirectoryadja hozzá a következő kulcs-érték párot a projekt egyik .editorconfig fájljához:
dotnet_code_quality.CA5393.unsafe_DllImportSearchPath_bits = 770
Meg kell adnia az enumerálás értékeinek bitenkénti kombinációjának egész értékét.
Példák pszeudokódokra
using System;
using System.Runtime.InteropServices;
class ExampleClass
{
[DllImport("The3rdAssembly.dll")]
[DefaultDllImportSearchPaths(DllImportSearchPath.AssemblyDirectory)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
public void ExampleMethod()
{
MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
}
}
Megoldás
using System;
using System.Runtime.InteropServices;
class ExampleClass
{
[DllImport("The3rdAssembly.dll")]
[DefaultDllImportSearchPaths(DllImportSearchPath.UserDirectories)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
public void ExampleMethod()
{
MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
}
}
Kapcsolódó szabályok
CA5392: Használja a DefaultDllImportSearchPaths attribútumot a P/Invokes esetén