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 |
Sí |
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.