Introducción
De manera predeterminada, las aplicaciones de Silverlight ejecutan en un ambiente conocido como un sandbox el cual permite que corran en confianza parcial. Las aplicaciones que ejecutan en confianza parcial tienen acceso limitado a recursos y están limitadas en funcionalidad para evitar escenarios en donde el código desee hacer algo dañino al usuario.
Silverlight 4 incluye la posibilidad de ejecutar las aplicaciones en Confianza Elevada. Cuando una aplicación ejecuta de esta manera se superan las limitantes del propio sandbox permitiendo que el aplicativo tenga acceso a recursos antes inaccesibles y a escenarios de funcionalidad casi como si se tratase de una aplicación de escritorio.
A continuación enlisto las posibilidades que se abren al crear este tipo de aplicaciones:
Acceso al Sistema de Archivos
Las aplicaciones que ejecutan en Confianza Elevada tienen acceso al Sistema de Archivos de la máquina del usuario sin necesidad de utilizar las cajas de diálogo OpenFileDialog y/o SaveFileDialog: los mecanismos clásicos utilizados para aplicaciones en confianza parcial. No obstante, a la fecha de creación de este artículo las únicas carpetas a las que puede tener acceso en Confianza Elevada son las del perfil del usuario: Mis Documentos, Mis Imágenes, Mis Videos y Mi Música.
Mis Documentos, Mis Imágenes, Mis Videos y Mi Música son las únicas carpetas –por lo menos en Silverlight 4 Beta- a las que puede tener acceso una aplicación que ejecute en Confianza Elevada
Acceso ‘relajado’ a otros Dominios
De manera predeterminada, una aplicación que ejecuta en confianza parcial requiere uno de los archivos de política de seguridad (crossdomain.xml o clientaccesspolicy.xml) para poder acceder a un endpoint o recurso localizado en un dominio diferente al dominio en donde está la aplicación Silverlight. Cuando se ejecuta en modo de Confianza Elevada este requerimiento es anulado, permitiendo que los aplicativos accedan a cualquier recurso en dominios externos.
Soporte completo al modo Pantalla Completa
Las aplicaciones que ejecutan en confianza parcial tienen acceso limitado al teclado cuando corren en Pantalla Completa, esto para evitar que una aplicación que simule la pantalla de credenciales del sistema operativo engañe al usuario. Asimismo, en confianza parcial se muestra un mensaje indicando que la aplicación está corriendo en Pantalla Completa. La siguiente figura muestra el mensaje que es mostrado al usuario:
Cuando una aplicación está configurada y corre en modo de Confianza Elevada el anterior mensaje es anulado y además la aplicación permite tener acceso completo al teclado.
Inicialización del Usuario ‘relajada’
Hay algunas características de la plataforma Silverlight que requieren ser invocadas por algún evento iniciado por el usuario: el clic de un botón del mouse o del teclado. En modo de Confianza Elevada este requisito se suaviza permitiendo así que la característica en cuestión sea invocada desde eventos automáticos de la aplicación (el evento Load tal vez). Un ejemplo claro es precisamente el punto anterior, el modo de Pantalla Completa que en confianza parcial exige que sea iniciado por algún evento del usuario. Por otro lado, en Confianza Elevada el modo de Pantalla Completa podrá ser invocado desde cualquier evento de la aplicación.
Acceso a COM
En Confianza Elevada, las aplicaciones podrán invocar componentes COM para extender su funcionalidad. Cabe mencionar que esta característica está presente únicamente para el sistema operativo Windows ya que en Mac OS no existe el concepto de COM.
Un punto en donde esta característica es especialmente útil es al integrar nuestras aplicaciones con Office, ya que podríamos desde Silverlight invocar vía COM las funcionalidades de cualquiera de sus productos. En realidad, cualquier producto que exponga un componente de COM podría ser invocado desde nuestros aplicativos de Silverlight para complementar su funcionalidad.
Habilitando la Confianza Elevada
Ya que el modo de Confianza Elevada únicamente está presente para aplicaciones que ejecuten Afuera del Navegador, se ha agregado en la caja de diálogo de configuración de este tipo de aplicaciones la opción de ejecutar en Confianza Elevada:
Al habilitar esta opción, el manifiesto de la aplicación cambiará apropiadamente. El siguiente fragmento de código muestra el archivo OutOfBrowserSettings.xml, archivo que será posteriormente incluido en el manifiesto presente en el archivo .xap:
<OutOfBrowserSettings ShortName="Demo.SL4.ConfianzaElevada Application" EnableGPUAcceleration="False" ShowInstallMenuItem="True">
<OutOfBrowserSettings.Blurb>Demo.SL4.ConfianzaElevada Application on your desktop; at home, at work or on the go.</OutOfBrowserSettings.Blurb>
<OutOfBrowserSettings.WindowSettings>
<WindowSettings Title="Demo.SL4.ConfianzaElevada Application" />
</OutOfBrowserSettings.WindowSettings>
<OutOfBrowserSettings.SecuritySettings>
<SecuritySettings ElevatedPermissions="Required" />
</OutOfBrowserSettings.SecuritySettings>
<OutOfBrowserSettings.Icons />
</OutOfBrowserSettings>
Como podrán observar en el fragmento de código anterior, es el elemento <SecuritySettings> el cual indica si la aplicación ejecutará en Confianza Elevada o no.
Las aplicaciones Fuera del Navegador son las únicas que tienen la posibilidad de ejecutar en Confianza Elevada. Las aplicaciones que corren adentro del navegador siempre ejecutarán en confianza parcial
Asimismo, la caja de diálogo de instalación de las aplicaciones cambia, advirtiendo al usuario que únicamente instale aplicaciones de sitios de confianza, ya que potencialmente este tipo de aplicativos puede dañar su equipo o hacer cosas maliciosas.
Resumen
En Silverlight 4 se agrega el modo de Confianza Elevada para que este tipo de aplicaciones superen las limitantes ya conocidas de la confianza parcial: modo predeterminado en el que ejecutan las aplicaciones de Silverlight. Esto es especialmente interesante y emocionante para las personas que nos dedicamos a crear soluciones con esta plataforma ya que la línea de separación entre aplicaciones Web y de Escritorio cada vez es más delgada.
No obstante, si bien al habilitar esta opción se abre una puerta a mayores posibilidades de funcionalidad, también se abre otra: la de escenarios potencialmente maliciosos. Pero aquí debemos ser muy claros: es y será la responsabilidad de cada usuario el decidir si instala o no en su equipo este tipo de aplicativos; sin embargo, es en este campo de cultura digital en donde falta mucho por hacer ya que independientemente de la plataforma tecnológica, es necesaria la educación en términos de seguridad y riesgo a toda persona que tenga contacto con un equipo de cómputo, para evitar a toda costa la propagación de aplicativos que tengan comportamientos contraproducentes, sobre todo a aquellas personas que no están directamente ligadas al ámbito tecnológico.
Un mundo de posibilidades está a nuestro alcance, aprovechémoslo con responsabilidad.