CA5393: Ne használjon nem biztonságos DllImportSearchPath értéket
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 kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Nem |
Ok
Az xref:System.Runtime.InteropServices.DllImportSearchPath?displayProperty=fullName egyik nem biztonságos értékének <használata:
AssemblyDirectory
UseDllDirectoryForDependencies
ApplicationDirectory
LegacyBehavior
Szabály leírása
Rosszindulatú DLL lehet az alapértelmezett DLL keresési könyvtárakban és szerelvénykö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 a Kódtár betöltése Széf.
Szabálysértések kijavítása
Használjon biztonságos értékeket DllImportSearchPath explicit keresési útvonal megadásához:
SafeDirectories
System32
UserDirectories
Mikor kell letiltani a figyelmeztetéseket?
A szabályt nyugodtan letilthatja, ha:
- Biztos benne, hogy a betöltött szerelvény az, amit szeretne.
- Az importált szerelvény egy gyakran használt rendszerszerelvény, például a 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 ApplicationDirectory
adja 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: A DefaultDllImportSearchPaths attribútum használata P/Invokes esetén
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: