CA2145: Jawne metody nie powinny być dekorowane za pomocą SuppressUnmanagedCodeSecurityAttribute
Pozycja | Wartość |
---|---|
Ruleid | CA2145 |
Kategoria | Microsoft.Security |
Zmiana powodująca niezgodność | Kluczowa |
Przyczyna
Przezroczysta metoda, metoda oznaczona atrybutem SecuritySafeCriticalAttribute lub typ zawierający metodę, jest oznaczona atrybutem SuppressUnmanagedCodeSecurityAttribute .
Uwaga
Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.
Opis reguły
Metody ozdobione atrybutem SuppressUnmanagedCodeSecurityAttribute mają niejawny element LinkDemand umieszczony na dowolnej metodzie, która ją wywołuje. Ten element LinkDemand wymaga, aby kod wywołujący był krytyczny dla bezpieczeństwa. Oznaczanie metody używającej polecenia SuppressUnmanagedCodeSecurity z atrybutem SecurityCriticalAttribute sprawia, że to wymaganie jest bardziej oczywiste dla wywołań metody .
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, oznacz metodę lub typ za pomocą atrybutu SecurityCriticalAttribute .
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżeń dla tej reguły.
Kod
using System;
using System.Runtime.InteropServices;
using System.Security;
namespace TransparencyWarningsDemo
{
public class SafeNativeMethods
{
// CA2145 violation - transparent method marked SuppressUnmanagedCodeSecurity. This should be fixed by
// marking this method SecurityCritical.
[DllImport("kernel32.dll", SetLastError = true)]
[SuppressUnmanagedCodeSecurity]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool Beep(uint dwFreq, uint dwDuration);
}
}
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