CA2145: Jawne metody nie powinny być dekorowane za pomocą SuppressUnmanagedCodeSecurityAttribute
TypeName |
TransparentMethodsShouldNotUseSuppressUnmanagedCodeSecurity |
CheckId |
CA2145 |
Kategoria |
Microsoft.Security |
Złamanie zmiany |
Złamanie |
Przyczyna
Metoda przezroczyste, metoda, która jest oznaczona z SecuritySafeCriticalAttribute oznaczone metodą lub typ, który zawiera metodę SuppressUnmanagedCodeSecurityAttribute atrybut.
Opis reguły
Metody ozdobione SuppressUnmanagedCodeSecurityAttribute atrybut mają niejawne LinkDemand, nałożone na jakąkolwiek metodę, która go wymaga.LinkDemand tego wymaga, aby kod wywołujący był zabezpieczeń, krytyczne.Znakowanie metodę, która korzysta z SuppressUnmanagedCodeSecurity z SecurityCriticalAttribute atrybut powoduje, że wymaganie to bardziej oczywiste dla wywoływania metody.
Jak naprawić naruszenia
Aby naprawić naruszenie tej zasady, oznaczyć metodą lub typu z SecurityCriticalAttribute atrybut.
Kiedy do pomijania ostrzeżenia
Nie pomijaj ostrzeżenie od 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);
}
}