Freigeben über


CA2145: Transparente Methoden dürfen nicht mit dem SuppressUnmanagedCodeSecurity-Attribut versehen werden

TypeName

TransparentMethodsShouldNotUseSuppressUnmanagedCodeSecurity

CheckId

CA2145

Kategorie

Microsoft.Security

Unterbrechende Änderung

Breaking

Ursache

Eine transparente Methode, eine mit der SecuritySafeCriticalAttribute-Methode markierte Methode oder ein Typ, der eine mit dem SuppressUnmanagedCodeSecurityAttribute-Attribut markierte Methode enthält.

Regelbeschreibung

Mit dem SuppressUnmanagedCodeSecurityAttribute-Attribut ergänzte Methoden platzieren einen impliziten LinkDemand nach jeder Methode, die es aufruft. Dieser LinkDemand erfordert, dass der aufrufende Code sicherheitskritisch ist. Das Markieren der Methode, die SuppressUnmanagedCodeSecurity mit dem SecurityCriticalAttribute-Attribut verwendet, macht diese Anforderung offensichtlicher für Aufrufer der Methode.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, markieren Sie die Methode oder den Typ mit dem SecurityCriticalAttribute-Attribut:

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Code

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);
    }
}