Implementación y seguridad con ClickOnce

Actualización: noviembre 2007

Las aplicaciones que se implementan mediante la tecnología ClickOnce se ejecutan dentro de un recinto de seguridad, con un conjunto limitado de permisos basado en una zona de seguridad. En la tabla siguiente se muestran los permisos predeterminados basados en la ubicación de la implementación:

Ubicación de la implementación

Zona de seguridad

Ejecutada desde el Web

Zona de Internet

Instalada desde el Web

Zona de Internet

Instalada desde un recurso compartido de archivos de red

Zona de la intranet

Instalada desde un CD-ROM

Full Trust

Los permisos predeterminados se basan en la ubicación desde la cual fue implementada la versión original de la aplicación; las actualizaciones de la aplicación heredarán esos permisos. Si la aplicación se configura para que compruebe las actualizaciones desde una ubicación web o una ubicación de red y se encuentra disponible una versión más reciente, la instalación original puede recibir permisos para Internet o para la zona Intranet en lugar de permisos de plena confianza. Para evitar que el programa pida a los usuarios que concedan los permisos, el administrador del sistema puede especificar una directiva de implementación ClickOnce que defina un editor de aplicación concreto como origen de confianza. Para aquellos equipos en los que se implemente esta directiva, los permisos se concederán automáticamente y no se preguntará al usuario.

Seguridad y permisos

Como desarrollador, es su responsabilidad asegurarse de que la aplicación se ejecute con los permisos adecuados.

Nota:

Visual Studio le permite depurar su aplicación dentro de la zona de seguridad de destino y proporciona ayuda para desarrollar aplicaciones seguras.

Hay casos en los que una aplicación ClickOnce puede requerir permisos elevados. Por ejemplo, una aplicación que necesita interactuar con una hoja de cálculo de Excel podría exigir permisos superiores a los definidos para la zona de Internet o la zona de la Intranet. Si una aplicación requiere permisos elevados, se pedirá al usuario que conceda los permisos durante la instalación. Si el usuario acepta, la aplicación se instalará; en caso contrario, la instalación se detendrá.

Nota:

Para evitar que el programa pida a los usuarios que concedan los permisos, el administrador del sistema puede especificar una directiva de implementación ClickOnce que defina un editor de aplicación concreto como origen de confianza. En aquellos equipos en los que se implemente esta directiva, los permisos se concederán automáticamente y no se preguntará al usuario.

Los permisos correspondientes a una aplicación vienen determinados por la configuración del elemento <trustInfo> (Elemento) [Aplicación ClickOnce] del manifiesto de aplicación. Visual Studio genera automáticamente esta información basándose en la configuración de la página de propiedades Seguridad del proyecto. A una aplicación ClickOnce sólo se le conceden los permisos específicos que solicita. Por ejemplo, cuando el acceso a archivos requiere permisos de plena confianza, si la aplicación solicita permiso de acceso al archivo, sólo se le concederá permiso de acceso al archivo, pero no permisos de plena confianza. A la hora de desarrollar la aplicación ClickOnce, debe asegurarse de solicitar sólo los permisos concretos que necesite la aplicación.

Además, el manifiesto de implementación se debe firmar utilizando la firma Authenticode. Durante la instalación, la información del editor basada en la firma Authenticode aparecerá ante el usuario en el cuadro de diálogo de permisos, para mostrarle que la aplicación procede de un origen de confianza. Kit de desarrollo de software de Windows (SDK) incluye una herramienta de firma de archivos, Herramienta Firma (SignTool.exe), que permite firmar el manifiesto. (Tenga que cuenta que la herramienta de firma signcode.exe ha quedado en desuso.)

Nota:

La funcionalidad de firma, disponible en Visual Studio 2003 y versiones anteriores, se ha quitado de los Proyectos de instalación e implementación (Proyecto de instalación, Proyecto de programa de instalación Web, Proyecto CAB y Módulos de combinación). Si ha importado un proyecto de Visual Studio 2003 con la firma habilitada en Visual Studio 2005, o si desea habilitar la firma para el proyecto de implementación, deberá firmar los archivos del resultado de la compilación con Herramienta Firma (SignTool.exe), en un paso posterior a la compilación. Para obtener más información sobre cómo realizar esta acción, vea El archivo '<archivo>' no estaba firmado.

Autenticación basada en formularios de ASP.NET

Si desea controlar las implementaciones a las que puede obtener acceso cada usuario, no debe permitir accesos anónimos a las aplicaciones ClickOnce implementadas en un servidor web. En lugar de ello, debería permitir el acceso de los usuarios a las implementaciones instaladas mediante una identidad de usuario (utilizando la autenticación de Windows NT).

Si realiza implementaciones en un entorno sin autenticación de Windows NT, una solución podría ser intentar utilizar la autenticación basada en formularios de ASP.NET para autenticar al usuario. Sin embargo, ClickOnce no admite la autenticación basada en formularios porque utiliza cookies persistentes; éstas presentan un riesgo de seguridad porque residen en la caché de Internet Explorer y podrían prestarse a intrusiones. Por lo tanto, si está implementando aplicaciones ClickOnce, no se admitirá ningún escenario de implementación que no presente autenticación de Windows NT.

Pasar argumentos

Hay una consideración de seguridad adicional que debe tener en cuenta si necesita pasar argumentos a una aplicación ClickOnce. ClickOnce permite a los desarrolladores proporcionar una cadena de consulta a las aplicaciones implementadas en el web. La cadena de consulta toma la forma de una serie de pares de nombre y valor al final de la dirección URL que se utiliza para iniciar la aplicación:

http://servername.adatum.com/WindowsApp1.application? username=joeuser

Los argumentos de la cadena de consulta están deshabilitados de forma predeterminada. Para habilitarlos, debe establecer el atributo trustUrlParameters en el manifiesto de implementación de la aplicación. Este valor se puede establecer en Visual Studio y en MageUI.exe. Para obtener información detallada acerca de cómo habilitar el paso de cadenas de consulta, vea Cómo: Recuperar información de la cadena de consulta en una aplicación ClickOnce.

No debe pasar nunca argumentos recuperados a través de una cadena de consulta a una base de datos o a la línea de comandos sin antes comprobar los argumentos para garantizar que sean seguros. No son seguros los argumentos que incluyen caracteres de escape de línea de comandos o base de datos que pueden permitir a un usuario malintencionado manipular la aplicación mediante la ejecución de comandos arbitrarios.

Nota:

Los argumentos de la cadena de consulta constituyen la única forma de pasar argumentos a una aplicación ClickOnce cuando se inicia. No puede pasar argumentos a una aplicación ClickOnce desde la línea de comandos.

Implementar ensamblados protegidos

Es posible que desee proteger su aplicación mediante Dotfuscator para impedir el uso de técnicas de ingeniería inversa en el código por parte de otras personas. Sin embargo, la protección de ensamblados no está integrada en el IDE de Visual Studio ni en el proceso de implementación ClickOnce. Por lo tanto, tendrá que encargarse de la protección fuera del proceso de implementación, posiblemente utilizando un paso posterior a la compilación. Una vez creado el proyecto, tendría que llevar a cabo los siguientes pasos manualmente, fuera de Visual Studio:

  1. Encargarse de la protección mediante Dotfuscator. Para obtener más información, vea Tutorial: Implementar manualmente una aplicación ClickOnce.

  2. Utilizar Mage.exe o MageUI.exe para generar los manifiestos de ClickOnce y firmarlos. Para obtener más información, vea Herramienta de generación y edición de manifiestos (Mage.exe) y Herramienta de generación y edición de manifiestos, cliente gráfico (MageUI.exe).

  3. Publicar manualmente (copiar) los archivos en la ubicación de implementación de origen (servidor Web, recurso compartido UNC o CD-ROM).

Vea también

Conceptos

Elegir una estrategia de implementación

Elegir una estrategia de implementación de ClickOnce

Referencia

Herramienta Firma de archivos (Signcode.exe)

Otros recursos

Implementación ClickOnce