Utilizar bibliotecas de código que no es de plena confianza
Actualización: noviembre 2007
Las aplicaciones que no reciben plena confianza del sistema de seguridad de acceso a código del motor en tiempo de ejecución no pueden llamar a bibliotecas administradas compartidas a menos que el escritor de la biblioteca de clases permita específicamente a dichas aplicaciones utilizar la clase AllowPartiallyTrustedCallersAttribute. Por tanto, los escritores de aplicaciones deben tener en cuenta que algunas bibliotecas no están disponibles en un contexto de confianza parcial. De forma predeterminada, todo código que se ejecuta en la zonas de Internet y de la intranet local es de confianza parcial. Si el código no se va a ejecutar en un contexto de confianza parcial ni va a ser llamado por código de confianza parcial, no es necesario que lea la información de esta sección. Sin embargo, si escribe código que debe interactuar con código de confianza parcial o funcionar en un contexto con ese nivel de seguridad, deberá tener en cuenta los siguientes factores:
Para poder compartir las bibliotecas entre varias aplicaciones, se deben firmar con un nombre seguro. Los nombres seguros permiten colocar el código en la caché de ensamblados global y a los consumidores comprobar la identidad del autor de una parte específica de código móvil.
De forma predeterminada, las bibliotecas compartidas con nombres seguros realizan una LinkDemand implícita para obtener automáticamente plena confianza, sin que el escritor de la biblioteca tenga que hacer nada.
Si un llamador no tiene plena confianza y, aun así, intenta llamar a dicha biblioteca, el motor en tiempo de ejecución produce una excepción SecurityException y el llamador no podrá vincularse a la biblioteca.
Para deshabilitar la LinkDemand automática e impedir que se produzca una excepción, puede colocar el atributo AllowPartiallyTrustedCallersAttribute en el ámbito de un ensamblado de una biblioteca compartida. Con este atributo se puede llamar a las bibliotecas desde código administrado de confianza parcial.
El código de confianza parcial que obtiene el permiso de acceso a una biblioteca mediante este atributo sigue estando sujeto a otras restricciones definidas en la directiva de equipo local.
Mediante programación no se puede conseguir de ninguna forma que código de confianza parcial llame a una biblioteca que no tenga el atributo AllowPartiallyTrustedCallersAttribute. Si una aplicación no recibe un nivel de seguridad de plena confianza de forma predeterminada, un administrador debe modificar la directiva de seguridad y conceder plena confianza a la aplicación para que pueda llamar a dicha biblioteca.
Las bibliotecas que son privadas para una aplicación específica no requieren un nombre seguro ni el atributo AllowPartiallyTrustedCallersAttribute, y no es posible hacer referencia a esas bibliotecas en posibles códigos maliciosos fuera de la aplicación. Este código está protegido contra el uso indebido, ya sea intencionado o involuntario, por parte de código móvil de confianza parcial, sin que el programador ni el administrador tengan que hacer nada más.
Se debe considerar la posibilidad de habilitar el uso explícito de código de confianza parcial para los siguientes tipos de código:
Código que se ha probado minuciosamente en puntos vulnerables de la seguridad y que se atiene a las instrucciones descritas en Instrucciones de codificación segura.
Bibliotecas de código con nombres seguros escritas específicamente para escenarios de confianza parcial.
Todo componente (ya sea de confianza parcial o plena) firmado con un nombre seguro al que llamará código móvil descargado de Internet o de una intranet local. Estos componentes se ven afectados porque bajo la directiva de seguridad predeterminada el código móvil recibe confianza parcial.
Si se modifica la directiva predeterminada, cualquier código al que esa directiva de seguridad no conceda confianza total.
Nota: Algunas de las clases que proporciona la biblioteca de clases de .NET Framework no tienen el atributo AllowPartiallyTrustedCallersAttribute y no pueden ser llamadas por código de confianza parcial. Vea Ensamblados de .NET Framework marcados con AllowPartiallyTrustedCallersAttribute para obtener una lista de las clases invocables mediante código de confianza parcial.