CA5122 Deklaracje P/Invoke nie powinny być bezpieczne-krytyczne
Pozycja | Wartość |
---|---|
Ruleid | CA5122 |
Kategoria | Microsoft.Security |
Zmiana powodująca niezgodność | Kluczowa |
Przyczyna
Deklaracja P/Invoke została oznaczona symbolem SecuritySafeCriticalAttribute:
[assembly: AllowPartiallyTrustedCallers]
// ...
public class C
{
[SecuritySafeCritical]
[DllImport("kernel32.dll")]
public static extern bool Beep(int frequency, int duration); // CA5122 - safe critical p/invoke
}
W tym przykładzie C.Beep(...)
został oznaczony jako bezpieczna metoda krytyczna dla bezpieczeństwa.
Uwaga
Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.
Opis reguły
Metody są oznaczone jako SecuritySafeCritical, gdy wykonują operacje zależne od zabezpieczeń, ale mogą być również bezpiecznie używane przez kod przezroczystości. Jedną z podstawowych reguł zabezpieczeń modelu przezroczystości jest to, że przezroczysty kod nigdy nie może bezpośrednio wywołać kodu natywnego za pośrednictwem metody P/Invoke. Dlatego oznakowanie metody P/Invoke jako bezpiecznej-krytycznej pod względem zabezpieczeń nie umożliwi jej wywołania kodu przezroczystości i jest mylące dla analizy zabezpieczeń.
Jak naprawić naruszenia
Aby metoda P/Invoke stała się dostępna dla przejrzystego kodu, należy ujawnić dla niej bezpieczną-krytyczną pod względem zabezpieczeń metodę dla otoki:
[assembly: AllowPartiallyTrustedCallers
class C
{
[SecurityCritical]
[DllImport("kernel32.dll", EntryPoint="Beep")]
private static extern bool BeepPinvoke(int frequency, int duration); // Security Critical P/Invoke
[SecuritySafeCritical]
public static bool Beep(int frequency, int duration)
{
return BeepPInvoke(frequency, duration);
}
}
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżeń dla tej reguły.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla