CA2145: os métodos transparentes não devem ser decorados com o SuppressUnmanagedCodeSecurityAttribute
TypeName |
TransparentMethodsShouldNotUseSuppressUnmanagedCodeSecurity |
CheckId |
CA2145 |
Categoria |
Microsoft.Security |
Alteração Significativa |
Quebra |
Causa
Um método transparente, um método marcado com o método de SecuritySafeCriticalAttribute , ou um tipo que contém um método são marcados com o atributo de SuppressUnmanagedCodeSecurityAttribute .
Descrição da Regra
Os métodos decorados com o atributo de SuppressUnmanagedCodeSecurityAttribute têm um LinkDemand implícito colocado em cima de qualquer método que chama.Este LinkDemand requer que o código de chamada é segurança crítico.Marcar o método que usa SuppressUnmanagedCodeSecurity com o atributo de SecurityCriticalAttribute faz esse requisito mais óbvio para chamadores do método.
Como Corrigir Violações
Para corrigir uma violação desta regra, marque o método ou o tipo com o atributo de SecurityCriticalAttribute .
Quando Suprimir Alertas
Não elimine um alerta desta regra.
Código
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);
}
}