Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 (conjunto de permisos CASFullTrust ), independientemente de si se implementan mediante 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 una confianza AppDomain parcial mediante el modelo de complementos de .NET Framework. Para obtener más información, vea Información general sobre wpF Add-Ins.
Las aplicaciones hospedadas en el explorador WPF se hospedan en Windows Internet Explorer o Firefox, y pueden ser aplicaciones de explorador XAML (XBAP) o documentos flexible del lenguaje de marcado de aplicaciones extensibles (XAML) Para obtener más información, vea Introducción a 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 por el explorador (XBAP) de WPF.
Las aplicaciones alojadas en el navegador WPF se ejecutan dentro de un espacio aislado de seguridad con confianza parcial, que está limitado, por defecto, al conjunto de permisos de la zona de Internet predeterminada de CAS. 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:
Deshabilitación de ensamblados APTCA para aplicaciones de cliente parcialmente confiables
Comportamiento del espacio aislado para archivos XAML sueltos
Recursos para desarrollar aplicaciones WPF que promueven la seguridad
Navegación segura
Para XBAPs, WPF distingue dos tipos de navegación: aplicación y explorador.
La navegación de la aplicación es la navegación entre elementos de contenido dentro de una aplicación hospedada por un explorador. La 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 agregan a un proyecto con un tipo de compilación de Resource. | pack://application:,,,/MyResourceFile.xaml |
| Contenido | Archivos que se añaden a un proyecto con un tipo de construcción de Content. | pack://application:,,,/MyContentFile.xaml |
| Sitio de origen | Archivos que se agregan a un proyecto con un tipo de compilación 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, vea Recursos 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 por el usuario. El usuario navega haciendo clic en un Hyperlink elemento.
Navegación mediante programación. La aplicación navega sin implicar al usuario, por ejemplo, estableciendo la NavigationWindow.Source propiedad .
Seguridad de navegación del explorador
La navegación del explorador solo se considera segura en las siguientes condiciones:
Navegación por el usuario. El usuario navega haciendo clic en un elemento Hyperlink que está dentro del NavigationWindow principal, no en un Frame anidado.
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, file o mailto.
Si un XBAP intenta navegar al contenido de una manera que no cumple estas condiciones, se produce una SecurityException excepción .
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 las API WinINet o UrlMon , incluidos Internet Explorer y PresentationHost.exe.
Internet Explorer proporciona un mecanismo por el cual puede configurar la funcionalidad que puede ejecutarse en o desde Internet Explorer, incluyendo lo siguiente:
Componentes dependientes de .NET Framework
Controles y complementos ActiveX
Descargas
Escritura de scripts
Autenticación de usuario
La colección de funcionalidades que se pueden proteger de esta manera se configura por zona para las zonas Internet, Intranet, Sitios de confianza y Sitios restringidos . En los pasos siguientes se describe cómo configurar las opciones de seguridad:
Abra el Panel de control.
Haga clic en Red e Internet y, a continuación, haga clic en Opciones de Internet.
Aparecerá 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 independiente. 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 internet, intranet local y zonas de sitios de confianza y deshabilitada para la zona 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 del valor |
|---|---|---|
| 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. |
| MediaImageDisallow | REG_DWORD | 1 para no permitir; 0 para permitir. |
| MediaVideoDisallow | REG_DWORD | 1 para no permitir; 0 para permitir. |
| ScriptInteropDisallow (Prohibir Interoperabilidad de Scripts) | REG_DWORD | 1 para no permitir; 0 para permitir. |
Control de WebBrowser y controles de características
El control WPF WebBrowser se puede usar para hospedar contenido web. El control WPF WebBrowser envuelve el control subyacente WebBrowser ActiveX. WPF proporciona cierta compatibilidad para proteger la aplicación cuando se usa el control WPF WebBrowser para hospedar contenido web que no es de confianza. Sin embargo, las aplicaciones deben aplicar directamente algunas características de seguridad mediante el WebBrowser control . Para obtener más información sobre el control ActiveX de WebBrowser, consulte Información general y tutoriales del control WebBrowser.
Nota:
Esta sección también se aplica al control Frame, ya que usa el WebBrowser para navegar al contenido HTML.
Si el control WPF WebBrowser se usa para hospedar contenido web que no es de confianza, la aplicación debe usar una confianza AppDomain 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 InvokeScript método y la ObjectForScripting propiedad . Para obtener más información, vea Información general sobre wpF Add-Ins.
Si la aplicación usa el control WPF WebBrowser , otra manera de aumentar la seguridad y mitigar los ataques es habilitar los controles de características de Internet Explorer. Los controles de características son añadidos a Internet Explorer que permiten a los administradores y desarrolladores configurar funciones de Internet Explorer y aplicaciones que hospedan el control ActiveX WebBrowser, el cual 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 WPF WebBrowser , WPF habilita automáticamente los siguientes controles de características para la aplicación.
| Control de características |
|---|
| Manejación de MIME de funciones |
| FEATURE_MIME_SNIFFING |
| CACHÉ_DE_OBJETO_DE_CARACTERÍSTICA |
| FEATURE_SAFE_BINDTOOBJECT |
| RESTRICCIONES_DE_VENTANA_DE_CARACTERÍSTICAS |
| FUNCIÓN_ZONA_ELEVACIÓN |
| RESTRINGIR_DESCARGA_ARCHIVOS |
| FEATURE_RESTRICT_ACTIVEXINSTALL |
| GESTIÓN_DE_ADICIONALES |
| FUNCIÓN_HTTP_DESHABILITAR_NOMBRE_DE_USUARIO_CONTRASEÑA |
| CARACTERÍSTICA_BANDA_DE_SEGURIDAD |
| FEATURE_UNC_SAVEDFILECHECK |
| FEATURE_VALIDATE_NAVIGATE_URL |
| FEATURE_DISABLE_TELNET_PROTOCOL |
| FEATURE_WEBOC_POPUPMANAGEMENT |
| FUNCIÓN_DESACTIVAR_COMPRESIÓN_LEGACY |
| 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.
El proceso aplica controles de características que crean instancias del 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 Preguntas más frecuentes sobre la seguridad del host MSHTML: Parte I de II y Preguntas más frecuentes sobre la seguridad del host MSHTML: Parte II de II.
Para el archivo ejecutable, considere la posibilidad de habilitar los siguientes controles de características estableciendo el valor del Registro en 1.
| Control de características |
|---|
| FEATURE_ACTIVEX_REPURPOSEDETECTION |
| FEATURE_BLOCK_LMZ_IMG |
| FEATURE_BLOCK_LMZ_OBJECT |
| FEATURE_BLOCK_LMZ_SCRIPT |
| Función Restringir Recursos a LMZ |
| FEATURE_RESTRICT_ABOUT_PROTOCOL_IE7 |
| CARACTERÍSTICA_MOSTRAR_ADVERTENCIA_PROTOCOLO_APLICACIÓN_DIÁLOGO |
| FEATURE_LOCALMACHINE_LOCKDOWN |
| FUNCIONALIDAD_FORZAR_DIRECCIÓN_Y_ESTADO |
| CARACTERÍSTICA_ZONA_RESTRINGIDA_CUANDO_ARCHIVO_NO_ENCONTRADO |
Para el archivo ejecutable, considere la posibilidad de deshabilitar el siguiente control de características estableciendo el valor del Registro en 0.
| Control de características |
|---|
| CARACTERÍSTICA_PERMITIR_PEGAR_SCRIPT_ACCIONDELURL_SIALERTA |
Si ejecutas una aplicación de explorador XAML de confianza parcial (XBAP) que incluye un control WPF WebBrowser en Windows Internet Explorer, WPF hospeda el control WebBrowser ActiveX 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 Descripción y funcionamiento en modo protegido Internet Explorer.
Nota:
es-ES: Si intenta ejecutar un XBAP que incluye un control WPF WebBrowser en Firefox mientras está en la zona de Internet, se producirá un SecurityException. Esto se debe a la directiva de seguridad de WPF.
Desactivación de ensamblados APTCA para aplicaciones de cliente de 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 ( 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 ensamblado. 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 para 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 desactivar ensamblados APTCA está destinado principalmente a aplicaciones de terceros.
Comportamiento de Sandbox para archivos XAML independientes
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 acceden directamente a través del navegador, los archivos XAML sueltos se cargan en un espacio aislado de seguridad basado en el conjunto de permisos de la zona estándar de Internet.
Sin embargo, el comportamiento de seguridad es diferente cuando se navega a archivos XAML independientes desde un NavigationWindow o un Frame en una aplicación autónoma.
En ambos casos, el archivo XAML independiente al que se navega hereda los permisos de la 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 ambos Frame y NavigationWindow se pueden configurar para aislarlo cuando se navega 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 un Frame en una aplicación independiente se implementa basado en la infraestructura de alojamiento 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:
| Ámbito | Recurso |
|---|---|
| Código administrado | Guía de seguridad de patrones y prácticas para aplicaciones |
| CAS | Seguridad de acceso al código |
| ClickOnce | Seguridad e implementación de ClickOnce |
| WPF (Windows Presentation Foundation) | Seguridad de confianza parcial de WPF |
Consulte también
.NET Desktop feedback