Compartir a través de


Los ensamblados transparentes de seguridad no deben contener código de seguridad crítico

Actualización: noviembre 2007

Nombre de tipo

SecurityTransparentAssembliesShouldNotContainSecurityCriticalCode

Identificador de comprobación

CA2127

Categoría

Microsoft.Security

Cambio problemático

Motivo

No puede haber código crítico en un ensamblado 100% transparente.

Descripción de la regla

Esta regla analiza los ensamblados 100% transparentes para detectar cualquier anotación de SecurityCritical en el nivel de tipo, campo y método. Esta regla es útil porque marca el código que existe en un ensamblado 100% transparente. El código en un ensamblado 100% transparente activa una excepción de seguridad o un comportamiento inesperado en tiempo de ejecución.

En .NET Framework 2.0 se incluyó una característica denominada transparencia. Los métodos, campos, interfaces, clases y tipos individuales pueden ser transparentes o críticos.

El código transparente no puede elevar los privilegios de seguridad. Por consiguiente, cualquier permiso concedido o demandado pasa automáticamente a través del código al AppDomain del llamador o del host. Entre los ejemplos de 'elevaciones' se incluyen Asserts, LinkDemands, SuppressUnmanagedCode y código 'no seguro'.

Un ensamblado puede ser 100% transparente, 100% crítico o una mezcla de transparente y crítico.

Para marcar un ensamblado como 100% transparente, agregue el atributo de nivel de ensamblado:

 [assembly:System.Security.SecurityTransparent]

Para marcar un ensamblado como 100% crítico, agregue el atributo de nivel de ensamblado:

[assembly:System.Security.SecurityCritical(System.Security.SecurityCriticalScope.Everything)]

Para marcar un ensamblado como mezcla de transparente y crítico, agregue el atributo de nivel de ensamblado:

 [assembly:System.Security.SecurityCritical]

No puede haber código transparente en un ensamblado 100% crítico y no puede haber código crítico en un ensamblado 100% transparente.

Cómo corregir infracciones

Para resolver el problema, marque el ensamblado como mezcla de transparente y crítico o quite el atributo SecurityCritical del código marcado.

Cuándo suprimir advertencias

No suprima los mensajes de esta regla.