Compartir por


Información general sobre la seguridad en formularios de Windows Forms

Importante

Este contenido solo se aplica a .NET Framework a menos que se especifique lo contrario.

Antes del lanzamiento de .NET Framework, todo el código que se ejecuta en el equipo de un usuario tenía los mismos derechos o permisos para acceder a los recursos que tenía un usuario del equipo. Por ejemplo, si el usuario tenía permiso para acceder al sistema de archivos, el código tenía permiso para acceder al sistema de archivos; si el usuario tenía permiso para acceder a una base de datos, el código tenía permiso para acceder a esa base de datos. Aunque estos derechos o permisos pueden ser aceptables para el código en archivos ejecutables que el usuario ha instalado explícitamente en el equipo local, es posible que no sean aceptables para código potencialmente malintencionado procedente de Internet o de una intranet local. Este código no debe poder acceder a los recursos del equipo del usuario sin permiso.

.NET Framework presenta una infraestructura denominada Seguridad de acceso al código que le permite diferenciar los permisos o derechos que el código tiene de los derechos que tiene el usuario. De forma predeterminada, el código procedente de Internet y la intranet solo se pueden ejecutar en lo que se conoce como confianza parcial. Confianza parcial somete una aplicación a una serie de restricciones: entre otras cosas, una aplicación está restringida a acceder al disco duro local y no puede ejecutar código no administrado. .NET Framework controla los recursos a los que se permite el acceso en función de la identidad de ese código: de dónde procede, si tiene un Strong-Named ensamblados, si está firmado con un certificado, etc.

La tecnología ClickOnce, que se usa para implementar aplicaciones de Windows Forms, ayuda a facilitar el desarrollo de aplicaciones que se ejecutan en confianza parcial, en plena confianza o en confianza parcial con permisos elevados. ClickOnce proporciona características como La elevación de permisos y la implementación de aplicaciones de confianza para que la aplicación pueda solicitar permisos de plena confianza o permisos elevados del usuario local de forma responsable.

Descripción de la seguridad en .NET Framework

La seguridad de acceso al código permite que el código sea de confianza en distintos grados, en función de dónde se origine el código y en otros aspectos de la identidad del código. Para obtener más información sobre la evidencia que Common Language Runtime usa para determinar la directiva de seguridad, consulte Evidencia. Ayuda a proteger los sistemas informáticos frente a código malintencionado y ayuda a proteger el código de confianza de poner en peligro la seguridad intencionada o accidentalmente. La seguridad de acceso al código también proporciona más control sobre las acciones que puede realizar la aplicación, ya que solo puede especificar los permisos que necesita que tenga la aplicación. La seguridad de acceso al código afecta a todo el código administrado que tiene como destino Common Language Runtime, incluso si ese código no realiza una comprobación de permisos de seguridad de acceso a código único. Para obtener más información sobre la seguridad en .NET Framework, consulte Conceptos clave de seguridad y Conceptos básicos de seguridad de acceso al código.

Si el usuario ejecuta un archivo ejecutable de Windows Forms directamente fuera de un servidor web o un recurso compartido de archivos, el grado de confianza concedido a la aplicación depende de dónde reside el código y de cómo se inicia. Cuando se ejecuta una aplicación, se evalúa automáticamente y recibe un conjunto de permisos con nombre de Common Language Runtime. De forma predeterminada, al código del equipo local se le concede el conjunto de permisos de plena confianza, al código de una red local se le concede el conjunto de permisos de intranet local y al código de Internet se le concede el conjunto de permisos de Internet.

Nota:

En .NET Framework versión 1.0 Service Pack 1 y Service Pack 2, el grupo de códigos de zona de Internet recibe el conjunto de permisos Nothing. En todas las demás versiones de .NET Framework, el grupo de código de zona de Internet recibe el conjunto de permisos para Internet.

Los permisos predeterminados concedidos en cada uno de estos conjuntos de permisos se enumeran en el tema Directiva de seguridad predeterminada . Dependiendo de los permisos que recibe la aplicación, se ejecuta correctamente o genera una excepción de seguridad.

Muchas aplicaciones de Windows Forms se implementarán mediante ClickOnce. Las herramientas que se usan para generar una implementación clickOnce tienen valores predeterminados de seguridad diferentes a los descritos anteriormente. Para obtener más información, consulte la siguiente explicación.

Los permisos reales concedidos a la aplicación pueden ser diferentes de los valores predeterminados, ya que la directiva de seguridad se puede modificar; esto significa que la aplicación puede tener permiso en un equipo, pero no en otro.

Desarrollar una aplicación de Windows Forms más segura

La seguridad es importante en todos los pasos del desarrollo de aplicaciones. Empiece por revisar y seguir las directrices de codificación segura.

A continuación, decida si la aplicación debe ejecutarse en plena confianza o si debe ejecutarse en confianza parcial. Ejecutar la aplicación en plena confianza facilita el acceso a los recursos en el equipo local, pero expone la aplicación y sus usuarios a riesgos de seguridad elevados si no diseña y desarrolla la aplicación estrictamente según el tema Directrices de codificación segura. La ejecución de la aplicación en confianza parcial facilita el desarrollo de una aplicación más segura y reduce mucho el riesgo, pero requiere más planeación en cómo implementar determinadas características.

Si elige confianza parcial (es decir, los conjuntos de permisos Internet o Intranet local), decida cómo desea que la aplicación se comporte en este entorno. Windows Forms proporciona formas alternativas y seguras de implementar características cuando se encuentra en un entorno de confianza parcial. Algunas partes de la aplicación, como el acceso a datos, se pueden diseñar y escribir de forma diferente para entornos de confianza parcial y plena confianza. Algunas características de Windows Forms, como la configuración de la aplicación, están diseñadas para funcionar en confianza parcial. Para obtener más información, consulte Introducción a la configuración de la aplicación.

Si la aplicación necesita más permisos que la confianza parcial permite, pero no desea ejecutarse en plena confianza, puede ejecutarse en confianza parcial mientras afirma solo los permisos adicionales que necesita. Por ejemplo, si desea ejecutar con confianza parcial, pero debe conceder a la aplicación acceso de solo lectura a un directorio en el sistema de archivos del usuario, puede solicitar FileIOPermission solo para ese directorio. Se usa correctamente, este enfoque puede proporcionar a la aplicación una mayor funcionalidad y minimizar los riesgos de seguridad para los usuarios.

Al desarrollar una aplicación que se ejecutará en confianza parcial, realice un seguimiento de los permisos que la aplicación debe ejecutar y los permisos que la aplicación podría usar opcionalmente. Cuando se conozcan todos los permisos, se debería hacer una solicitud declarativa de permisos a nivel de aplicación. La solicitud de permisos informa al tiempo de ejecución de .NET Framework sobre qué permisos necesita la aplicación y qué permisos no desea específicamente. Para obtener más información sobre cómo solicitar permisos, vea Solicitar permisos.

Al solicitar permisos opcionales, debe controlar las excepciones de seguridad que se generarán si la aplicación realiza una acción que requiere permisos no concedidos. El control adecuado de SecurityException garantizará que la aplicación pueda seguir funcionando. La aplicación puede usar la excepción para determinar si una característica debe deshabilitarse para el usuario. Por ejemplo, una aplicación puede deshabilitar la opción de menú Guardar si no se concede el permiso de archivo necesario.

A veces, es difícil saber si ha declarado todos los permisos adecuados. Una llamada al método que parece inocua en la superficie, por ejemplo, puede tener acceso al sistema de archivos en algún momento durante su ejecución. Si no implementa la aplicación con todos los permisos necesarios, puede funcionar bien cuando la depura en el escritorio, pero puede fallar cuando se implementa. Tanto el SDK de .NET Framework 2.0 como Visual Studio 2005 contienen herramientas para calcular los permisos que necesita una aplicación: la herramienta de línea de comandos MT.exe y la característica Calcular permisos de Visual Studio, respectivamente.

En los temas siguientes se describen características de seguridad adicionales de Windows Forms.

Tema Descripción
- Acceso a archivos y datos más seguros en formularios Windows Forms Describe cómo acceder a archivos y datos en un entorno de confianza parcial.
- Impresión más segura en formularios Windows Forms Describe cómo acceder a las características de impresión en un entorno de confianza parcial.
- Consideraciones de seguridad adicionales en formularios Windows Forms Describe la realización de la manipulación de ventanas, el uso del Portapapeles y la realización de llamadas al código no administrado en un entorno de confianza parcial.

Implementación de una aplicación con los permisos adecuados

El medio más común de implementar una aplicación de Windows Forms en un equipo cliente es con ClickOnce, una tecnología de implementación que describe todos los componentes que la aplicación necesita para ejecutarse. ClickOnce usa archivos XML denominados manifiestos para describir los ensamblados y archivos que componen la aplicación y también los permisos que requiere la aplicación.

ClickOnce tiene dos tecnologías para solicitar permisos elevados en un equipo cliente. Ambas tecnologías se basan en el uso de certificados Authenticode. Los certificados ayudan a proporcionar cierta garantía a los usuarios de que la aplicación procede de un origen de confianza.

En la tabla siguiente se describen estas tecnologías.

Tecnología de permisos elevados Descripción
Elevación de privilegios Solicita al usuario un cuadro de diálogo de seguridad la primera vez que se ejecuta la aplicación. El cuadro de diálogo Elevación de permisos informa al usuario sobre quién publicó la aplicación, de modo que el usuario pueda tomar una decisión informada sobre si desea concederle confianza adicional.
Implementación de aplicaciones de confianza Implica a un administrador del sistema que realiza una instalación única del certificado Authenticode de un publicador en un equipo cliente. Desde ese momento, las aplicaciones firmadas con el certificado se consideran de confianza y pueden ejecutarse en plena confianza en el equipo local sin necesidad de solicitar más.

La tecnología que elija dependerá del entorno de implementación. Para obtener más información, consulte Elección de una estrategia de implementación clickOnce.

De forma predeterminada, las aplicaciones ClickOnce implementadas mediante Visual Studio o las herramientas del SDK de .NET Framework (Mage.exe y MageUI.exe) están configuradas para ejecutarse en un equipo cliente que tenga plena confianza. Si va a implementar la aplicación mediante confianza parcial o usando solo algunos permisos adicionales, tendrá que cambiar este valor predeterminado. Puede hacerlo con Visual Studio o con la herramienta sdk de .NET Framework MageUI.exe al configurar la implementación. Para obtener más información sobre cómo usar MageUI.exe, vea Tutorial: Implementación manual de una aplicación ClickOnce. Vea también Cómo: Establecer permisos personalizados para una aplicación ClickOnce o Cómo: Establecer permisos personalizados para una aplicación ClickOnce.

Para obtener más información sobre los aspectos de seguridad de ClickOnce y la elevación de permisos, consulte Asegurar aplicaciones ClickOnce. Para obtener más información sobre la implementación de aplicaciones de confianza, consulte Información general sobre la implementación de aplicaciones de confianza.

Probar la aplicación

Si ha implementado la aplicación de Windows Forms mediante Visual Studio, puede habilitar la depuración en confianza parcial o un conjunto de permisos restringidos desde el entorno de desarrollo. Consulte también Cómo: Depurar una aplicación ClickOnce con permisos restringidos.

Consulte también