¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Seguridad de Windows Presentation Foundation

Seguridad de Windows Presentation Foundation

2006

Publicado: 26 de Enero de 2007

En esta sección se analiza el modelo de seguridad para Windows Presentation Foundation (WPF) independiente, así como las aplicaciones alojadas en exploradores.

En esta página

Introducción Introducción
Navegación segura  Navegación segura
Configuración de seguridad de Internet Explorer Configuración de seguridad de Internet Explorer
Deshabilitación de ensamblados de APTCA de las aplicaciones de equipos de confianza parcial  Deshabilitación de ensamblados de APTCA de las aplicaciones de equipos de confianza parcial
Grupos de XAML dinámicos externos Grupos de XAML dinámicos externos
Recomendaciones para el desarrollo de aplicaciones WPF seguras Recomendaciones para el desarrollo de aplicaciones WPF seguras
Temas relacionados Temas relacionados

Introducción

Las aplicaciones WPF independientes se ejecutan con permisos ilimitados (conjunto de permisos de confianza total de CAS), si se implementan mediante Windows Installer (.msi), DOS XCopy o ClickOnce.

Windows Internet Explorer presenta las aplicaciones WPF alojadas en exploradores, que pueden ser aplicaciones del explorador XAML (XBAP) o lenguaje de marcado de aplicaciones extensible (XAML) dinámico (consulte Información general de aplicaciones alojadas en exploradores de Windows Presentation Foundation).

Las aplicaciones WPF alojadas en exploradores se ejecutan de forma predeterminada en un recinto de seguridad de confianza parcial, que se limita al conjunto de permisos de Internet CAS. De este modo se aíslan las aplicaciones alojadas en exploradores del equipo cliente de la misma forma en la que se aislarían aplicaciones Web típicas. La seguridad de confianza parcial se describe más detalladamente en Seguridad de confianza parcial de Windows Presentation Foundation.

Navegación segura

En XBAP, WPF distingue dos tipos de ámbito de navegación: de la aplicación y del explorador.

La navegación de la aplicación es la navegación entre elementos dentro de una aplicación alojada en un explorador, mientras que la navegación del explorador es aquella que cambia el contenido de un explorador. La relación entre la navegación de ámbito de la aplicación y la del explorador se muestra en la siguiente figura:

El tipo de contenido que se considera seguro para XBAP se determina principalmente dependiendo de si se realiza la navegación de la aplicación o del explorador.

Seguridad de navegación de la aplicación

La navegación de ámbito de la aplicación se considera segura si se puede identificar con un pack URI, que admite cuatro tipos de contenido:

  • Archivos de recursos, archivos que se agregan a un proyecto con un tipo de generación de recurso y se pueden identificar mediante un URI como el que se muestra a continuación:

    pack://application:,,,/MyResourceFile.xaml
    
  • Archivos de recursos, archivos que se agregan a un proyecto con un tipo de generación de contenido y se pueden identificar mediante un URI como el que se muestra a continuación:

    pack://application:,,,/MyContentFile.xaml
    
  • Archivos de sitio de origen, archivos que se agregan a un proyecto sin tipo de generación y se pueden identificar mediante un URI como el que se muestra a continuación:

    pack://siteoforigin:,,,/MySiteOfOriginFile.xaml
    
  • Archivos de código de aplicación, archivos que se agregan a un proyecto con un tipo de generación de página y se pueden identificar mediante un URI como el que se muestra a continuación:

    pack://application:,,,/MyResourceFile.xaml
    

Nota

Para obtener más información acerca de archivos de datos de la aplicación y packs URI, consulte Archivos de datos de la aplicación Windows Presentation Foundation.

Los archivos con este tipo de contenido se pueden explorar como resultado de una navegación de usuario o de programación.

  • Navegación de usuario. El usuario da lugar a la navegación haciendo clic en un elemento de hipervínculo.

  • Navegación de programación. La aplicación dio lugar a la navegación sin implicar al usuario

Seguridad de navegación del explorador

La navegación del explorador se considera segura sólo en las siguientes condiciones:

  • Navegación de usuario. El usuario da lugar a la navegación haciendo clic en un elemento de hipervínculo.

  • Zona. El contenido por el que se navega se encuentra en Internet o en la zona de Intranet local

  • Protocolo. El protocolo que se utiliza es http:, https:, file: o mailto:.

Si un XBAP intenta navegar por el contenido de modo que no se cumplan estas condiciones, se genera una excepción SecurityException.

Configuración de seguridad de Internet Explorer

Internet Explorer proporciona un mecanismo mediante el cual puede configurar la funcionalidad que va a ejecutar o que se va a ejecutar desde el mismo, que incluye:

  • Componentes que dependen de .NET Framework 3.0

  • Controles ActiveX y complementos

  • Descargas

  • Secuencias de comandos

  • Autenticación de usuarios

Una configuración de seguridad determina si se puede ejecutar una función y cómo se ejecuta. Puede ajustar la configuración de seguridad para habilitar por completo una función deshabilitada o para solicitar al usuario las veces que desea que una función intente ejecutarse.

La colección de esta función que se puede asegurar de esta forma, se configura por zonas para las zonas de Internet, Intranet, sitios de confianza y sitios de no confianza. Puede ajustar la configuración de seguridad de la siguiente manera:

  1. Abra Internet Explorer.

  2. En el menú Herramientas, haga clic en Opciones de Internet | Seguridad

  3. Seleccione la zona para la que desea ajustar la configuración de seguridad

  4. Haga clic en el botón Nivel personalizado

Se abre el cuadro de diálogo Configuración de seguridad para ajustar la configuración de seguridad de la zona seleccionada

Windows Internet Explorer 7 incluye las cuatro configuraciones de seguridad siguientes para .NET Framework 3.0:

  • XAML dinámico. Determina si Internet Explorer 7 puede navegar por archivos XAML dinámicos. (Opciones Habilitar, Deshabilitar y Preguntar).

  • Aplicaciones XAML del explorador. Determina si Internet Explorer 7 puede navegar y ejecutar XBAP. (Opciones Habilitar, Deshabilitar y Preguntar).

  • Documentos XPS. Determina si Internet Explorer 7 puede navegar y cargar documentos XML Paper Specification (XPS). (Opciones Habilitar, Deshabilitar y Preguntar).

  • Habilitar la instalación de .NET Framework. Determina si .NET Framework 3.0 se puede instalar a través de Internet Explorer 7. (Sólo opciones Habilitar o Deshabilitar).

  • Estas configuraciones aparecen habilitadas para las zonas Internet, Intranet local y Sitios de confianza, y deshabilitadas para la zona Sitios restringidos.

Configuración de seguridad para IE6 y versiones anteriores

En las versiones de Internet Explorer distintas de Internet Explorer 6, la configuración de seguridad para varias configuraciones de seguridad relacionadas con .NET Framework 3.0 se puede ajustar desde el registro, bajo la siguiente clave:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation 
Foundation\Features

En la siguiente tabla se muestran los valores que se pueden ajustar.

Nombre de valor

Tipo de valor

Datos de valor

XBAPDisallow

REG_DWORD

1 para no permitir; 0 para permitir.

LooseXamlDisallow

REG_DWORD

1 para no permitir; 0 para permitir.

WebBrowserDisallow

REG_DWORD

1 para no permitir; 0 para permitir.

XPSDocumentsDisallow

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.

Nota

De entre estos valores, XBAPDisallow y WebBrowserDisallow funcionan en todas las versiones de Internet Explorer.

Deshabilitación de ensamblados de APTCA de las aplicaciones de equipos de confianza parcial

A la hora de administrar ensamblados instalados en la caché de ensamblados global (GAC), éstos pasan a estado de plena confianza, puesto que el usuario debe proporcionar permiso explícito para instalarlos. Puesto que son de plena confianza, sólo pueden hacer uso de ellos las aplicaciones de equipos administrados de confianza. Para permitir que las aplicaciones de confianza parcial puedan hacer uso de los mismos, se deben marcar con el atributo AllowPartiallyTrustedCallersAttribute (APTCA). Se deben marcar con este atributo únicamente aquellos ensamblados que han demostrado ser seguros para su ejecución en modo de confianza parcial.

Sin embargo, es posible que un ensamblado APTCA presente una brecha de seguridad después de instarlo en la GAC. Una vez descubierta la brecha de seguridad, los editores de ensamblado pueden realizar una revisión para reparar el problema en las instalaciones existentes, así como para protegerlo de las instalaciones que se puedan llevan a cabo una vez descubierto el problema. Una opción para la revisión es desinstalar el ensamblado, aunque esto puede interrumpir otras aplicaciones del equipo de plena confianza que utilicen el mismo.

WPF proporciona un mecanismo mediante el cual el ensamblaje APTCA se puede deshabilitar para las aplicaciones WPF de confianza parcial, incluido XBAP, sin desinstalarlo.

Para deshabilitar un ensamblaje APTCA, es necesario crear una clave especial bajo la siguiente clave de registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\<AssemblyFullName>, 
FileVersion=<AssemblyFileVersion>

La siguiente ilustración muestra una clave de ejemplo:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\aptcagac, Version=1.0.0.0, 
Culture=neutral, PublicKeyToken=215e3ac809a0fea7, FileVersion=1.0.0.0

De este modo, se establece una entrada para el ensamblado APTCA, aunque también necesita crear un valor debajo de esta clave que habilite o deshabilite el ensamblado. Los siguientes datos son los correspondientes al valor que debe crear:

  • Nombre de valor APTCA_FLAG.

  • Tipo de valor REG_DWORD.

  • Datos de valor: 1 para deshabilitar; 0 para habilitar.

Los editores de ensamblados que se deban deshabilitar de esta forma para aplicaciones de equipos de confianza parcial, pueden registrar una revisión para crear una clave de registro y entradas de valores para el ensamblado.

Nota

Los principales ensamblados de .NET Framework 3.0 no se verán afectados por este tipo de deshabilitación, puesto que son necesarios para que las aplicaciones administradas se ejecuten. La compatibilidad de la deshabilitación de ensamblados APTCA está dirigida principalmente a terceros y a los no pertenecientes a .NET Framework 3.0

Grupos de XAML dinámicos externos

Los archivos XAML dinámicos son archivos .xaml de sólo marcado que no se pueden identificar mediante un pack URI (consulte Pack URI en Windows Presentation Foundation) (en inglés). Esto significa que no son recursos, contenido ni sitios de archivos de origen (consulte Archivos de datos de la aplicación Windows Presentation Foundation).

Al navegar por los archivos XAML directamente desde Internet Explorer, el conjunto de permisos de la zona Internet los incluye en un recinto de seguridad.

Sin embargo, el comportamiento de seguridad es distinto cuando se navega por los archivos XAML desde la ventana de navegación o el marco de una aplicación independiente

En ambos casos, el archivo XAML dinámico por el que se navega, obtiene los permisos de la aplicación host. Sin embargo, este comportamiento puede no ser deseable desde una perspectiva de seguridad, en concreto si se crea un archivo XAML dinámico mediante una entidad de no confianza o desconocida. Este tipo de contenido se conoce como contenido externo y tanto el marco como la ventana de navegación se pueden configurar para aislarlo cuando se navegue por el mismo configurando la propiedad SandboxExternalContent adecuadamente, como se muestra:

<!-- Sandboxing external content using Frame -->
<Frame 
    NavigateUri="ExternalContentPage.xaml" 
    SandboxExternalContent="True">
</Frame>
<!-- Sandboxing external content using NavigationWindow-->
<NavigationWindow
    Source="ExternalContentPage.xaml" 
    SandboxExternalContent="True">
</NavigationWindow>

Con esta configuración, el contenido externo se cargará en un proceso independiente del proceso que alberga la aplicación. Este proceso está restringido al conjunto de permisos de la zona predeterminada de Internet, aislado de forma efectiva de la aplicación host y del equipo cliente.

Recomendaciones para el desarrollo de aplicaciones WPF seguras

La creación de aplicaciones para WPF que sean seguras, requiere la aplicación de recomendaciones para:

Temas relacionados

Conceptos

Otros recursos

Mostrar:
© 2015 Microsoft