CA2145: Transparentní metody nesmějí být doplněny pomocí SuppressUnmanagedCodeSecurityAttribute
TypeName |
TransparentMethodsShouldNotUseSuppressUnmanagedCodeSecurity |
CheckId |
CA2145 |
Kategorie |
Microsoft.Security |
Narušující změna |
Narušující |
Příčina
Transparentní metoda, metoda označená atributem SecuritySafeCriticalAttribute nebo typ obsahující metodu označenou atributem SuppressUnmanagedCodeSecurityAttribute.
Popis pravidla
Na jakoukoli metodu, která volá metody označené atributem SuppressUnmanagedCodeSecurityAttribute, je implicitně umístěn LinkDemand.Tento LinkDemand vyžaduje, aby volající kód byl kriticky zabezpečený.Označení metody, která používá SuppressUnmanagedCodeSecurity, atributem SecurityCriticalAttribute zviditelňuje tento požadavek pro volající metody.
Jak vyřešit porušení
Porušení tohoto pravidla lze vyřešit označením metody nebo typu atributem SecurityCriticalAttribute.
Kdy potlačit upozornění
Nepotlačujte upozornění na toto pravidlo.
Kód
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);
}
}