Seguridad de acceso del código para aplicaciones ClickOnce

Actualización: noviembre 2007

Las aplicaciones ClickOnce se basan en .NET Framework y están sujetas a las restricciones de seguridad de acceso a código. Por esta razón, es importante que entienda las implicaciones de seguridad de acceso a código y escriba sus aplicaciones ClickOnce según corresponda.

La seguridad de acceso a código es un mecanismo de .NET Framework que ayuda a limitar el acceso que el código tiene a recursos y operaciones protegidas. Siempre debe configurar los permisos de seguridad de acceso del código para la aplicación ClickOnce de modo que sólo se incluyan aquellos permisos que sean necesarios para la aplicación. Visual Studio proporciona las herramientas necesarias para determinar y configurar el conjunto de permisos para la aplicación.

Seguridad predeterminada de acceso al código para ClickOnce

De manera predeterminada, una aplicación ClickOnce recibe los permisos de plena confianza cuando se instala o ejecuta en un equipo cliente. Aunque puede haber casos en los que los permisos de plena confianza sean realmente necesarios, en general, no se recomienda conceder estos permisos por dos razones importantes:

  • Una aplicación con permisos de plena confianza tiene acceso sin restricciones a los recursos, por ejemplo, al sistema de archivos y al Registro. Esto puede hacer que la aplicación (y el sistema del usuario final) sea susceptible a un ataque de código malintencionado.

  • Cuando una aplicación requiera permisos de plena confianza, se le solicitará al usuario final que conceda estos permisos a la aplicación. Esto significa que la aplicación no proporciona realmente una experiencia de ClickOnce, y la solicitud puede confundir a los usuarios con menos experiencia.

    Nota:

    Al instalar una aplicación desde medios extraíbles, como un CD-ROM, no se le pregunta al usuario. Además, un administrador de red puede configurar la directiva de red de forma que no se pregunte a los usuarios cuando instalen una aplicación desde un origen de confianza. Para obtener más información, consulte Información general sobre la implementación de aplicaciones de confianza.

Por estas razones, siempre debe modificar los permisos de seguridad de acceso del código para su aplicación, de modo que sólo se incluyan los permisos requeridos por la aplicación.

Configurar permisos de seguridad

Siempre debe configurar la aplicación ClickOnce para que sólo se soliciten los permisos necesarios de seguridad de acceso del código. Puede configurar los permisos de seguridad en la página Seguridad del Diseñador de proyectos.

La página Seguridad del Diseñador de proyectos contiene una casilla Habilitar configuración de seguridad de ClickOnce. Cuando esta casilla está activada, las solicitudes de permiso de seguridad se agregan al manifiesto de implementación de la aplicación. Durante la instalación, se le pedirá al usuario que conceda los permisos necesarios si se solicitan más permisos de los predeterminados para la zona desde la que se implementa la aplicación. Para obtener más información, consulte Cómo: Habilitar la configuración de seguridad para aplicaciones ClickOnce.

Las aplicaciones implementadas desde diferentes ubicaciones obtienen niveles de permisos diferentes sin solicitarlos. Por ejemplo, cuando una aplicación se implementa desde Internet, recibe un conjunto de permisos muy restrictivo. Cuando se instala desde una intranet local, recibe más permisos y, cuando se instala desde un CD-ROM, recibe permisos de plena confianza.

Como punto de partida para configurar los permisos, puede seleccionar una zona de seguridad en la lista Zona de la página Seguridad. Si es posible implementar la aplicación desde más de una zona, seleccione la zona con menos permisos. Si desea comenzar sin ningún permiso preestablecido y agregar los permisos necesarios para la aplicación de uno en uno, seleccione la zona Personalizar.

Cuando se selecciona una zona, la lista Permisos se actualiza para mostrar los permisos predeterminados para esa zona; los permisos incluidos tienen una marca verde. Para obtener más información, consulte Cómo: Establecer una zona de seguridad para una aplicación ClickOnce.

Para limitar más los permisos, puede seleccionar un conjunto de permisos y modificar las propiedades. Por ejemplo, si es preciso que la aplicación muestre el cuadro de diálogo Abrir archivo, el conjunto FileDialogPermission concede el derecho para mostrar cuadros de diálogo. De forma predeterminada, este conjunto de permisos habilita los cuadros de diálogo Abrir archivo y Guardar archivo. Para modificar la configuración predeterminada, haga clic en el conjunto FileDialogPermission, haga clic en Propiedades para abrir el cuadro de diálogo Configuración de los permisos y establezca el permiso en Abrir cuadro de diálogo únicamente. Para obtener más información, consulte Cómo: Establecer permisos personalizados para una aplicación ClickOnce.

Nota:

Las propiedades que se pueden establecer varían según el conjunto de permisos; no todos los conjuntos de permisos tienen propiedades configurables.

También puede excluir los conjuntos de permisos que no necesite o habilitar permisos que no formen parte de los permisos predeterminados de una zona. Para ello, debe escoger un valor para el conjunto de permisos en la lista Configuración. Los permisos que se hayan modificado se indicarán con texto en negrita. Si se habilita un permiso que no forma parte del valor predeterminado de la zona, se agregará un icono de información junto a la marca de activación Se incluye.

Nota:

Cuando se habilitan permisos que no forman parte del valor predeterminado de una zona, el usuario final recibe una notificación, tal y como se indicó anteriormente en este mismo tema. Siempre que habilite permisos adicionales, deberá modificar el conjunto de permisos para que sólo se incluyan los permisos realmente necesarios.

Determinar los permisos requeridos para una aplicación

Para configurar eficazmente los permisos de seguridad, resulta de gran utilidad saber qué permisos requiere exactamente la aplicación. Puede utilizar la herramienta Calculadora de permisos, disponible desde la página Seguridad, para analizar el código y determinar los permisos exactos que requiere la aplicación.

Nota:

Existen algunas limitaciones para la herramienta Calculadora de permisos. Esta herramienta realiza un análisis estático del código y no puede determinar los permisos necesarios para el código enlazado en tiempo de ejecución o para ensamblados cargados de forma dinámica. Además, si ha diseñado la aplicación para que sus demandas de permisos se modifiquen de forma dinámica, cuando se ejecute en un entorno con menos permisos, la herramienta notificará el número máximo de permisos necesarios.

Una vez que la herramienta haya analizado la aplicación, todos los conjuntos de permisos necesarios se establecerán s en Habilitado y se marcarán en negrita. Si un permiso habilitado no forma parte del valor predeterminado de la zona, también se marcará con un icono de advertencia. Si desea evitar que se pregunte al usuario final, debe revisar los conjuntos de permisos para determinar si existe alguna forma de modificar el código de modo que deje de necesitarse el permiso.

Para obtener más información, consulte Cómo: Determinar los permisos de una aplicación ClickOnce.

Depurar un aplicación que dispone de permisos restringidos

Como desarrollador, probablemente ejecute su equipo de desarrollo con permisos de plena confianza. Por lo tanto, cuando depure la aplicación, no verá las mismas excepciones de seguridad que pueden ver los usuarios cuando ejecutan la aplicación.

Para detectar estas excepciones, debe depurar la aplicación con los mismos permisos que el usuario final. La depuración con permisos restringidos se puede habilitar en la página Seguridad del Diseñador de proyectos.

Al depurar una aplicación con permisos restringidos, se producirán excepciones para cualquier demanda de seguridad del código que no se haya habilitado en la página Seguridad. Aparecerá una aplicación auxiliar de excepciones, que proporcionará sugerencias sobre la forma de modificar el código para impedir que se produzca la excepción.

Además, al escribir el código, la característica IntelliSense del Editor de código hará que cualquier miembro que no esté incluido en los permisos de seguridad configurados aparezca deshabilitado.

Para obtener más información, consulte Cómo: Depurar una aplicación ClickOnce con permisos restringidos.

Permisos de seguridad para las aplicaciones hospedadas en un explorador

Visual Studio proporciona los siguientes tipos de proyecto para las aplicaciones de Windows Presentation Foundation (WPF):

  • Aplicación para Windows de WPF

  • Aplicación de explorador web de WPF

  • Biblioteca de controles personalizados de WPF

  • Biblioteca de servicios de WPF

De todos estos tipos de proyecto, sólo se hospedan en un servidor web las aplicaciones de explorador web de WPF y, por lo tanto, requieren una configuración de implementación y seguridad especial. La configuración de seguridad predeterminada para este tipo de aplicaciones es la siguiente:

  • Habilitar configuración de seguridad de ClickOnce

  • Aplicación de confianza parcial

  • Zona de Internet (con un conjunto de permisos predeterminado para las aplicaciones seleccionadas de explorador web de WPF)

En el cuadro de diálogo Configuración de seguridad avanzada, la casilla Depurar esta aplicación con el conjunto de permisos seleccionados está activada y deshabilita. Esto se debe a que no puede desactivarse la depuración en zona para las aplicaciones que se hospedan en un explorador.

Cuando las aplicaciones de explorador web de WPF se implementan con ClickOnce, solicitan un conjunto de permisos específico (almacenado en el archivo appname.exe.manifest). Se trata de los permisos predeterminados para el conjunto de permisos de seguridad de acceso del código de la zona de Internet, además de otros dos permisos adicionales:

WebBrowserPermission

MediaPermission

Si establece permisos no predeterminados, Visual Studio emitirá una advertencia que indique que la aplicación está configurada para solicitar un permiso no predeterminado. Se producirá un error en la instalación a menos que la directiva de seguridad ya se haya insertado en el equipo de destino.

Vea también

Tareas

Cómo: Habilitar la configuración de seguridad para aplicaciones ClickOnce

Cómo: Establecer una zona de seguridad para una aplicación ClickOnce

Cómo: Establecer permisos personalizados para una aplicación ClickOnce

Cómo: Determinar los permisos de una aplicación ClickOnce

Cómo: Depurar una aplicación ClickOnce con permisos restringidos

Conceptos

Implementación y seguridad con ClickOnce

Información general sobre la implementación de aplicaciones de confianza

Referencia

Página Seguridad, Diseñador de proyectos