Seguridad (WPF)
Al desarrollar aplicaciones independientes y hospedadas en explorador de Windows Presentation Foundation (WPF), debe tener en cuenta el modelo de seguridad. Las aplicaciones independientes de WPF se ejecutan con permisos sin restricciones (CASconjunto de permisos FullTrust), tanto si se implementan con Windows Installer (.msi), XCopy o ClickOnce. No se admite la implementación de aplicaciones WPF independientes de confianza parcial con ClickOnce. Sin embargo, una aplicación host de plena confianza puede crear un AppDomain de confianza parcial mediante el modelo de complementos de .NET Framework. Para obtener más información, vea WPF Add-Ins Visión general.
Las aplicaciones hospedadas en el explorador WPF se hospedan en Windows Internet Explorer o Firefox, y pueden ser aplicaciones de explorador XAML (XBAPs) o documentos de lenguaje de marcado extensible de aplicaciones (XAML) flexible Para obtener más información, vea Información general sobre las aplicaciones de explorador XAML de WPF.
Advertencia
Los XBAP requieren que los exploradores heredados funcionen, como Internet Explorer y versiones anteriores de Firefox. Normalmente, estos exploradores más antiguos no son compatibles con Windows 10 y Windows 11. Los exploradores modernos ya no admiten la tecnología necesaria para las aplicaciones XBAP debido a riesgos de seguridad. Los complementos que habilitan XBAPs ya no se admiten. Para obtener más información, vea preguntas más frecuentes sobre las aplicaciones hospedadas en explorador (XBAP) de WPF.
Las aplicaciones WPF hospedadas en el navegador se ejecutan, por defecto, dentro de un entorno de seguridad de confianza parcial, que está limitado al conjunto de permisos predeterminado de CAS de la zona de Internet. Esto aísla eficazmente las aplicaciones hospedadas por el explorador WPF del equipo cliente de la misma manera que esperaría que las aplicaciones web típicas se aislaran. Un XBAP puede elevar privilegios, hasta Plena confianza, en función de la zona de seguridad de la dirección URL de implementación y la configuración de seguridad del cliente. Para obtener más información, vea seguridad de confianza parcial de WPF.
En este tema se describe el modelo de seguridad para aplicaciones independientes y hospedadas en explorador de Windows Presentation Foundation (WPF).
Este tema contiene las secciones siguientes:
deshabilitar ensamblados APTCA para aplicaciones cliente de confianza parcial
Comportamiento del Espacio Aislado para Archivos XAML Sueltos
recursos de para desarrollar aplicaciones WPF que promueven la de seguridad
Navegación segura
Para XBAPs, WPF distingue dos tipos de navegación: aplicación y explorador.
La navegación dentro de la aplicación es la navegación entre elementos de contenido dentro de una aplicación alojada por un navegador. navegación del explorador es la navegación que cambia el contenido y la dirección URL de ubicación de un propio explorador. La relación entre la navegación de la aplicación (normalmente XAML) y la navegación del explorador (normalmente HTML) se muestra en la ilustración siguiente:
El tipo de contenido que se considera seguro para que un XBAP navegue a se determina principalmente por si se usa la navegación de la aplicación o la navegación del explorador.
Seguridad de navegación de aplicaciones
La navegación de la aplicación se considera segura si se puede identificar con un URI de paquete, que admite cuatro tipos de contenido:
Tipo de contenido | Descripción | Ejemplo de URI |
---|---|---|
Recurso | Archivos que se añaden a un proyecto con un tipo de compilación Recurso. | pack://application:,,,/MyResourceFile.xaml |
Contenido | Archivos que se añaden a un proyecto con un tipo de compilación de Contenido. | pack://application:,,,/MyContentFile.xaml |
Sitio de origen | Archivos que se agregan a un proyecto con un tipo de compilación de None. | pack://siteoforigin:,,,/MySiteOfOriginFile.xaml |
Código de aplicación | Recursos XAML que tienen un código subyacente compilado. -o- Archivos XAML que se agregan a un proyecto con un tipo de compilación de Page. |
pack://application:,,,/MyResourceFile .xaml |
Nota
Para obtener más información sobre los archivos de datos de la aplicación y los URI de paquete, consulte Recurso de Aplicación de WPF, Contenido y Archivos de Datos.
Los archivos de estos tipos de contenido se pueden navegar por el usuario o mediante programación:
Navegación de usuario. El usuario navega haciendo clic en un elemento Hyperlink.
Navegación Programática. La aplicación navega sin implicar al usuario, por ejemplo, estableciendo la propiedad NavigationWindow.Source.
Seguridad de navegación del explorador
La navegación del explorador solo se considera segura en las siguientes condiciones:
Navegación de usuario. El usuario navega haciendo clic en un elemento Hyperlink que está dentro del NavigationWindowprincipal , no en un Frameanidado .
Zona. El contenido al que se navega se encuentra en Internet o en la intranet local.
protocolo. El protocolo que se usa es http, https, archivoo mailto.
Si un XBAP intenta navegar al contenido de una forma que no cumpla con estas condiciones, se lanza un SecurityException.
Configuración de seguridad de software de exploración web
La configuración de seguridad del equipo determina el acceso al que se concede cualquier software de exploración web. El software de exploración web incluye cualquier aplicación o componente que use la de WinINet
Internet Explorer proporciona un mecanismo mediante el cual puede configurar la funcionalidad que se puede ejecutar por o desde Internet Explorer, incluyendo lo siguiente:
Componentes dependientes de .NET Framework
Controles y complementos ActiveX
Descargas
Scripting
Autenticación de usuario
La colección de funcionalidades que se pueden proteger de esta manera se configura por zona para las zonas de Internet, Intranet, Sitios de Confianzay Sitios Restringidos. En los pasos siguientes se describe cómo configurar las opciones de seguridad:
Abra Panel de control.
Haga clic en red e Internet y, a continuación, haga clic en Opciones de Internet.
Aparece el cuadro de diálogo Opciones de Internet.
En la pestaña Seguridad, seleccione la zona para la que configurar las opciones de seguridad.
Haga clic en el botón nivel personalizado.
Aparece el cuadro de diálogo Configuración de seguridad y puede configurar las opciones de seguridad de la zona seleccionada.
Nota
También puede acceder al cuadro de diálogo Opciones de Internet desde Internet Explorer. Haga clic en Herramientas y, a continuación, haga clic en Opciones de Internet.
A partir de Windows Internet Explorer 7, se incluyen las siguientes opciones de seguridad específicas para .NET Framework:
XAML suelto Controla si Internet Explorer puede navegar a archivos XAML sueltos. (Opciones: Habilitar, Deshabilitar y Preguntar).
aplicaciones de explorador XAML. Controla si Internet Explorer puede navegar y ejecutar XBAP. (Opciones: Habilitar, Deshabilitar y Preguntar).
De forma predeterminada, esta configuración está habilitada para las zonas de Internet, intranet localy sitios de confianza, y deshabilitada para la zona de sitios restringidos .
Configuración del Registro de WPF relacionada con la seguridad
Además de la configuración de seguridad disponible a través de las opciones de Internet, los siguientes valores del Registro están disponibles para bloquear de forma selectiva una serie de características de WPF sensibles a la seguridad. Los valores se definen bajo la clave siguiente:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Features
En la tabla siguiente se enumeran los valores que se pueden establecer.
Nombre del valor | Tipo de valor | Datos valiosos |
---|---|---|
XBAPDisallow | REG_DWORD | 1 para no permitir; 0 para permitir. |
LooseXamlDisallow | REG_DWORD | 1 para no permitir; 0 para permitir. |
DeshabilitarNavegadorWeb | REG_DWORD | 1 para no permitir; 0 para permitir. |
MediaAudioDisallow | REG_DWORD | 1 para no permitir; 0 para permitir. |
DesactivarImagenMedios | REG_DWORD | 1 para no permitir; 0 para permitir. |
MediaVideoDisallow | REG_DWORD | 1 para no permitir; 0 para permitir. |
ScriptInteropDisallow | REG_DWORD | 1 para no permitir; 0 para permitir. |
el Control WebBrowser y los Controles de Funciones
El control WebBrowser WPF se puede usar para hospedar contenido web. El control WPF WebBrowser envuelve el control ActiveX subyacente de WebBrowser. WPF proporciona cierta compatibilidad para proteger la aplicación cuando se usa el control de WebBrowser WPF para hospedar contenido web que no es de confianza. Sin embargo, las aplicaciones deben aplicar directamente algunas características de seguridad mediante el control WebBrowser. Para obtener más información sobre el control ActiveX de WebBrowser, consulte Información general del control WebBrowser y Tutoriales.
Nota
Esta sección también se aplica al control Frame, ya que usa el WebBrowser para navegar al contenido HTML.
Si el control de WebBrowser WPF se usa para hospedar contenido web que no es de confianza, la aplicación debe usar un AppDomain de confianza parcial para ayudar a aislar el código de la aplicación del código de script HTML potencialmente malintencionado. Esto es especialmente cierto si la aplicación interactúa con el script hospedado mediante el método InvokeScript y la propiedad ObjectForScripting. Para obtener más información, vea WPF Add-Ins Información general.
Si la aplicación usa el control de WebBrowser WPF, otra manera de aumentar la seguridad y mitigar los ataques es habilitar los controles de características de Internet Explorer. Los controles de funcionalidad son adiciones a Internet Explorer que permiten a los administradores y desarrolladores configurar funcionalidades de Internet Explorer y de las aplicaciones que hospedan el control ActiveX WebBrowser, que el control WPF WebBrowser encapsula. Los controles de características se pueden configurar mediante la función CoInternetSetFeatureEnabled o cambiando los valores del Registro. Para obtener más información sobre los controles de características, vea Introducción a los controles de características y Controles de características de Internet.
Si está desarrollando una aplicación WPF independiente que usa el control de WebBrowser WPF, WPF habilita automáticamente los siguientes controles de características para la aplicación.
Control de características |
---|
FUNCIÓN_MANEJO_MIME |
FUNCIÓN_DETECCIÓN_MIME |
CARACTERÍSTICA_ALMACENAMIENTO_EN_CACHÉ_DE_OBJETOS |
FEATURE_SAFE_BINDTOOBJECT |
RESTRICCIONES_DE_VENTANA_DE_CARACTERÍSTICA |
ELEVACIÓN_ZONA_DE_CARACTERÍSTICA |
CARACTERÍSTICA_RESTRINGIR_DESCARGA_ARCHIVOS |
FEATURE_RESTRICT_ACTIVEXINSTALL |
FEATURE_ADDON_MANAGEMENT |
FUNCIÓN_HTTP_NOMBRE_USUARIO_CONTRASEÑA_DESACTIVAR |
FEATURE_SECURITYBAND |
FEATURE_UNC_SAVEDFILECHECK |
CARACTERÍSTICA_VALIDAR_NAVEGAR_URL |
Desactivación de la funcionalidad del protocolo Telnet (FEATURE_DISABLE_TELNET_PROTOCOL) |
FEATURE_WEBOC_POPUPMANAGEMENT |
FUNCIÓN_DESACTIVAR_COMPRESIÓN_OBSOLETA |
FEATURE_SSLUX |
Dado que estos controles de características están habilitados incondicionalmente, una aplicación de plena confianza podría verse afectada por ellos. En este caso, si no hay ningún riesgo de seguridad para la aplicación específica y el contenido que hospeda, se puede deshabilitar el control de características correspondiente.
Los controles de características son aplicados por el proceso que instancia el objeto ActiveX de WebBrowser. Por lo tanto, si va a crear una aplicación independiente que pueda navegar a contenido que no es de confianza, considere seriamente la posibilidad de habilitar controles de características adicionales.
Nota
Esta recomendación se basa en recomendaciones generales para la seguridad del host MSHTML y SHDOCVW. Para obtener más información, vea FAQ sobre la seguridad del host MSHTML: Parte I de II y FAQ sobre la seguridad del host MSHTML: Parte II de II.
Para su ejecutable, considere activar los siguientes controles de funciones estableciendo el valor del Registro en 1.
Control de características |
---|
FUNCIÓN_ACTIVEX_DETECCIÓN_REDIRECCIONAMIENTO |
FEATURE_BLOCK_LMZ_IMG |
FEATURE_BLOCK_LMZ_OBJECT |
FEATURE_BLOCK_LMZ_SCRIPT |
FEATURE_RESTRICT_RES_TO_LMZ |
FUNCIÓN_RESTRINGIR_ACERCA_DE_PROTOCOLO_IE7 |
FUNCIÓN_MOSTRAR_DIÁLOGO_ADVERTENCIA_PROT_APLICACIÓN |
FEATURE_LOCALMACHINE_LOCKDOWN |
FEATURE_FORCE_ADDR_AND_STATUS |
CARACTERÍSTICA_ZONA_RESTRINGIDA_CUANDO_ARCHIVO_NO_ENCONTRADO |
Para su ejecutable, considere deshabilitar el siguiente control de funciones estableciendo el valor del Registro en 0.
Control de características |
---|
CARACTERÍSTICA_HABILITAR_SCRIPT_PEGAR_ACCIÓN_URL_SI_SE_PIDE |
Si ejecutas una aplicación de explorador XAML de confianza parcial (XBAP) que incluye un control de WebBrowser WPF en Windows Internet Explorer, WPF hospeda el control ActiveX WebBrowser en el espacio de direcciones del proceso de Internet Explorer. Dado que el control ActiveX de WebBrowser se hospeda en el proceso de Internet Explorer, todos los controles de características de Internet Explorer también están habilitados para el control ActiveX de WebBrowser.
Los XBAPs que se ejecutan en Internet Explorer también obtienen un nivel adicional de seguridad en comparación con las aplicaciones independientes normales. Esta seguridad adicional se debe a Internet Explorer y, por tanto, al control ActiveX WebBrowser, se ejecuta en modo protegido de forma predeterminada en Windows Vista y Windows 7. Para obtener más información sobre el modo protegido, vea Understanding and Working in Protected Mode Internet Explorer.
Nota
Si intentas ejecutar un XBAP que incluya un control WPF de WebBrowser en Firefox, en la zona de Internet se lanzará un SecurityException. Esto se debe a la directiva de seguridad de WPF.
Desactivación de ensamblados APTCA para aplicaciones de cliente con confianza parcial
Cuando los ensamblados administrados se instalan en la caché global de ensamblados (GAC), se convierten en de plena confianza porque el usuario debe proporcionar permiso explícito para instalarlos. Dado que son de plena confianza, solo las aplicaciones cliente administradas de plena confianza pueden usarlas. Para permitir que las aplicaciones de confianza parcial las usen, deben marcarse con el AllowPartiallyTrustedCallersAttribute (APTCA). Solo los ensamblados que se han probado para que sean seguros para su ejecución en confianza parcial deben marcarse con este atributo.
Sin embargo, es posible que un ensamblado APTCA muestre un error de seguridad después de instalarse en la GAC . Una vez detectado un error de seguridad, los publicadores de ensamblados pueden generar una actualización de seguridad para corregir el problema en las instalaciones existentes y para protegerse frente a las instalaciones que pueden producirse después de que se detecte el problema. Una opción para la actualización es desinstalar el ensamblado, aunque esto puede interrumpir otras aplicaciones cliente de plena confianza que usan el ensamblado.
WPF proporciona un mecanismo por el que se puede deshabilitar un ensamblado APTCA para XBAPs de confianza parcial sin desinstalar el ensamblado APTCA.
Para deshabilitar un ensamblado APTCA, debe crear una clave especial del Registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\<AssemblyFullName>, FileVersion=<AssemblyFileVersion>
A continuación se muestra un ejemplo:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\aptcagac, Version=1.0.0.0, Culture=neutral, PublicKeyToken=215e3ac809a0fea7, FileVersion=1.0.0.0
Esta clave establece una entrada para el ensamblado APTCA. También tiene que crear un valor en esta clave que habilite o deshabilite el ensamblaje. A continuación se muestran los detalles del valor:
Nombre del valor: APTCA_FLAG.
Tipo de valor: REG_DWORD.
Datos de valor: 1 para deshabilitar; 0 habilitar.
Si un ensamblado tiene que deshabilitarse para aplicaciones cliente de confianza parcial, puede escribir una actualización que cree la clave y el valor del Registro.
Nota
Los ensamblados de .NET Framework principales no se ven afectados al deshabilitarlos de esta manera porque son necesarios para que las aplicaciones administradas se ejecuten. El soporte para deshabilitar ensamblados APTCA se destina principalmente a aplicaciones de terceros.
Comportamiento del espacio aislado para archivos XAML sueltos
Los archivos XAML sueltos son archivos XAML de solo marcado que no dependen de ningún código subyacente, controlador de eventos o ensamblado específico de la aplicación. Cuando se accede a los archivos XAML sueltos directamente desde el navegador, se cargan dentro de un entorno de seguridad basado en el conjunto de permisos predeterminado de la zona de Internet.
Sin embargo, el comportamiento de seguridad es diferente cuando se accede a archivos XAML sueltos desde un NavigationWindow o Frame en una aplicación independiente.
En ambos casos, el archivo XAML suelto al que se navega hereda los permisos de su aplicación anfitriona. Sin embargo, este comportamiento puede no ser deseable desde una perspectiva de seguridad, especialmente si un archivo XAML flexible se generó mediante una entidad que no es de confianza o desconocida. Este tipo de contenido se conoce como contenido externo, y tanto Frame como NavigationWindow se pueden configurar para aislarlo cuando se accede a él. El aislamiento se logra estableciendo la propiedad SandboxExternalContent en true, como se muestra en los ejemplos siguientes para Frame y NavigationWindow:
<Frame
Source="ExternalContentPage.xaml"
SandboxExternalContent="True">
</Frame>
<!-- Sandboxing external content using NavigationWindow-->
<NavigationWindow
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Source="ExternalContentPage.xaml"
SandboxExternalContent="True">
</NavigationWindow>
Con esta configuración, el contenido externo se cargará en un proceso independiente del proceso que hospeda la aplicación. Este proceso está restringido al conjunto de permisos de zona de Internet predeterminado, lo que lo aísla eficazmente de la aplicación de hospedaje y del equipo cliente.
Nota
Aunque la navegación a archivos XAML sueltos desde un NavigationWindow o Frame en una aplicación independiente se implementa en función de la infraestructura de hospedaje del explorador WPF, que implica el proceso PresentationHost, el nivel de seguridad es ligeramente menor que cuando el contenido se carga directamente en Internet Explorer en Windows Vista y Windows 7 (que seguiría siendo a través de PresentationHost). Esto se debe a que una aplicación WPF independiente que usa un explorador web no proporciona la característica de seguridad del modo protegido adicional de Internet Explorer.
Recursos para desarrollar aplicaciones WPF que promueven la seguridad
A continuación se muestran algunos recursos adicionales para ayudar a desarrollar aplicaciones WPF que promueven la seguridad:
Área | Recurso |
---|---|
Código administrado | Guía de seguridad de patrones y prácticas de para aplicaciones |
CAS | Seguridad de acceso al código |
ClickOnce | Seguridad y despliegue de ClickOnce |
WPF | seguridad de confianza parcial de WPF |
Consulte también
- seguridad de confianza limitada de WPF
- Estrategia de Seguridad de WPF - Seguridad de la Plataforma
- Estrategia de seguridad de WPF - Ingeniería de seguridad
- Guía de seguridad sobre patrones y prácticas para aplicaciones
- Seguridad de acceso al código
- Seguridad e implementación de ClickOnce
- XAML en WPF
.NET Desktop feedback