Compartir a través de


Delegados

La seguridad de los delegados difiere entre las distintas versiones de .NET Framework. En esta sección se describen los distintos comportamientos de los delegados y consideraciones de seguridad asociadas.

En las versiones 1.0 y 1.1 de .NET Framework

En las versiones 1.0 y 1.1 de .NET Framework se realizan las siguientes acciones de seguridad en el creador de un delegado y el llamador de un delegado.

  • Cuando se crea un delegado, las peticiones de vínculos de seguridad en el método de destino del delegado se realizan en el conjunto concedido del creador del delegado. Si no se puede satisfacer la acción de seguridad, se produce una excepción SecurityException.

  • Cuando se invoca al delegado, se realiza cualquier petición de seguridad existente en el llamador del delegado.

Cada vez que el código tome delegados de un código de menos confianza que puede llamarlo, asegúrese de que no habilita el código de menos confianza para aumentar sus permisos. Si toma un delegado y lo utiliza más adelante, el código que creó el delegado no estará en la pila de llamadas y sus permisos no se probarán si el código en o bajo el delegado intenta realizar una operación protegida. Si su código y el código del llamador tienen privilegios de mayor nivel que el creador, éste último puede organizar la ruta de la llamada, aunque no forme parte de la pila de llamadas.

Para solucionar este problema, puede limitar los llamadores (exigiendo un permiso, por ejemplo) o restringir los permisos que permiten ejecutar el delegado (mediante un reemplazo de pila Deny o PermitOnly, por ejemplo).

En la versión 2.0 y versiones posteriores de .NET Framework

A diferencia de las versiones anteriores, la versión 2.0 de .NET Framework realiza la acción de seguridad en el creador del delegado cuando se crea y se llama al delegado.

  • Cuando se crea un delegado, las peticiones de vínculos de seguridad en el método de destino del delegado se realizan en el conjunto concedido del creador del delegado. Si no se puede satisfacer la acción de seguridad, se produce una excepción SecurityException.

  • El conjunto concedido del creador del delegado también se captura durante la creación del delegado y se almacena con el delegado.

  • Cuando se invoca al delegado, el conjunto concedido capturado del creador del delegado se evalúa en primer lugar con respecto a cualquier petición en el contexto actual si el creador y el llamador del delegado pertenecen a distintos ensamblados. A continuación, se realiza cualquier petición de seguridad existente en el llamador del delegado.

Vea también

Otros recursos

Instrucciones de codificación segura