CA2145: Los métodos transparentes no deben ser representativos con el atributo SuppressUnmanagedCodeSecurityAttribute
Elemento | Valor |
---|---|
RuleId | CA2145 |
Category | Microsoft.Security |
Cambio importante | Problemático |
Causa
Un método transparente, un método marcado con el atributo SecuritySafeCriticalAttribute o un tipo que contiene un método se marca con el atributo SuppressUnmanagedCodeSecurityAttribute.
Nota
Esta regla está en desuso. Para más información, consulte Reglas en desuso.
Descripción de la regla
Los métodos decorados con el atributo SuppressUnmanagedCodeSecurityAttribute tienen una LinkDemand implícita colocada en cualquier método que la llame. Esta LinkDemand requiere que el código de llamada sea crítico para la seguridad. Marcar el método que utiliza SuppressUnmanagedCodeSecurity con el atributo SecurityCriticalAttribute hace este requisito más obvio para los llamadores del método.
Cómo corregir infracciones
Para corregir una infracción de esta regla, marque el método o tipo con el atributo SecurityCriticalAttribute.
Cuándo suprimir las advertencias
No suprima las advertencias de esta regla.
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);
}
}
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de