Conceptos básicos sobre la seguridad de acceso a código

Todas las aplicaciones que tengan como destino Common Language Runtime (es decir, todas las aplicaciones administradas) deben interactuar con el sistema de seguridad de Common Language Runtime. Cuando se carga una aplicación administrada, su host le concede automáticamente un conjunto de permisos. Estos permisos los determina la configuración de seguridad local del host o el espacio aislado en que está la aplicación. En función de estos permisos, la aplicación se ejecuta correctamente o genera una excepción de seguridad.

El host predeterminado para las aplicaciones de escritorio permite la ejecución del código en plena confianza. Por consiguiente, si una aplicación tiene como destino el escritorio, dispone de un conjunto de permisos no restringidos. Otros hosts o espacios aislados proporcionan un conjunto de permisos limitados para las aplicaciones. Dado que el conjunto de permisos puede cambiar de un host a otro, una aplicación se debe diseñar para que se utilicen solamente los permisos que el host de destino permite.

Se debe estar familiarizado con los siguientes conceptos de seguridad de acceso del código para escribir aplicaciones eficaces que tengan como destino Common Language Runtime:

  • Escribir código seguro de tipos: para que el código pueda beneficiarse de la seguridad de acceso a código, es preciso utilizar un compilador que genere código con seguridad de tipos comprobable. Para obtener más información, vea Escribir código seguro de tipos comprobable.

  • Sintaxis imperativa y declarativa: la interacción con el sistema de seguridad del motor en tiempo de ejecución se realiza mediante llamadas de seguridad imperativas y declarativas. Las llamadas declarativas se realizan mediante atributos, mientras que las llamadas imperativas se realizan con nuevas instancias de clases del código. Unas llamadas pueden realizarse solamente de forma imperativa, mientras que otras pueden realizarse solamente de forma declarativa, y algunas pueden realizarse de ambas maneras. Para obtener más información, vea Sintaxis de seguridad.

  • Utilizar bibliotecas de clases seguras: las bibliotecas de clases utilizan la seguridad de acceso del código para especificar los permisos que requieren para que se obtenga acceso a ellas. Debe conocer los permisos necesarios para obtener acceso a cualquier biblioteca que el código utilice.

  • Código transparente: en .NET Framework versión 4 y versiones posteriores, además de identificar los permisos específicos, también debe determinar si el código se debe ejecutar como transparente en seguridad. El código transparente en seguridad no puede llamar a tipos o miembros identificados como críticos para la seguridad. Esta regla se aplica a las aplicaciones de plena confianza así como a las aplicaciones de confianza parcial. Para obtener más información, vea Utilizar bibliotecas de clases seguras y Código transparente en seguridad.

Vea también

Conceptos

Escribir código seguro comprobable

Sintaxis de seguridad

Solicitar permisos

Utilizar bibliotecas de clases seguras

Seguridad de acceso del código