Información general sobre controles de permisos

El modelo de seguridad de tiempo de ejecución del cliente Flash Player se ha diseñado en torno a los recursos, que son objetos como, por ejemplo, archivos SWF, datos locales y URL de Internet. Las personas con un interés directo son aquellas que poseen o utilizan esos recursos. Estas personas pueden ejercer controles (configuración de seguridad) sobre sus propios recursos y cada recurso tiene cuatro personas con un interés directo. Flash Player aplica de forma estricta una jerarquía de autoridad para estos controles, como se muestra en la siguiente ilustración:


Diagrama que muestra la jerarquía de autoridad de configuración de seguridad de Flash Player: la configuración del administrador tiene prioridad sobre todas las demás, seguida de la configuración del usuario, la del sitio Web y finalmente la del autor.

Jerarquía de controles de seguridad


Esto significa, por ejemplo, que si un administrador restringe el acceso a un recurso, ninguna otra persona con un interés directo puede anular dicha restricción.

Los controles de administrador, usuario y sitio Web se detallan en las siguientes secciones. La configuración del autor (desarrollador) se describe en el resto de este capítulo.

Subtemas

Controles de usuario administrador
Controles de usuario
Controles de sitio Web (archivos de política entre dominios)
Controles de autor (desarrollador)

Controles de usuario administrador

Un usuario administrador de un equipo, que haya iniciado sesión con derechos administrativos, puede aplicar una configuración de seguridad de Flash Player que afecte a todos los usuarios del equipo. En un entorno no empresarial, como puede ser un equipo doméstico, suele haber un usuario que tiene además acceso administrativo. Incluso en un entorno empresarial, los usuarios individuales pueden tener derechos administrativos en el equipo.

Hay dos tipos de controles de usuario administrador:

El archivo mms.cfg

En sistemas Mac OS X, el archivo mms.cfg se encuentra en /Library/Application Support/Macromedia/mms.cfg. En sistemas Microsoft Windows, el archivo se encuentra en la carpeta de Macromedia Flash Player en el directorio del sistema (por ejemplo, C:\windows\system32\macromed\flash\mms.cfg en una instalación predeterminada de Windows XP).

Cuando se inicia Flash Player, lee la configuración de seguridad de este archivo y la utiliza para limitar la funcionalidad.

El archivo mms.cfg incluye la configuración que el administrador utiliza para realizar las siguientes tareas:

Un archivo SWF puede acceder a información sobre las capacidades desactivadas, mediante una llamada a las propiedades Capabilities.avHardwareDisable y Capabilities.localFileReadDisable. Sin embargo, la mayor parte de la configuración del archivo mms.cfg no puede consultarse desde ActionScript.

Para aplicar las políticas de privacidad y seguridad independientes de la aplicación en un equipo, el archivo mms.cfg sólo deben modificarlo los administradores del sistema. Los instaladores de aplicación no deben utilizar el archivo mms.cfg. Aunque un instalador que se ejecutara con privilegios de administrador podría modificar el contenido del archivo mms.cfg, Adobe considera que dicho uso infringe la confianza del usuario e insta a los creadores de los instaladores que no modifiquen nunca el archivo mms.cfg.

El directorio Global Flash Player Trust

Los usuarios administradores y los instaladores pueden registrar determinados archivos SWF locales como archivos de confianza. Estos archivos SWF se asignan al entorno limitado local de confianza. Pueden interactuar con cualquier otro archivo SWF y pueden cargar datos de cualquier ubicación local o remota. Los archivos se designan como archivos de confianza en el directorio Global Flash Player Trust, que es el mismo directorio del archivo mms.cfg, en las siguientes ubicaciones (las ubicaciones son específicas del usuario actual):

El directorio Flash Player Trust puede contener cualquier número de archivos de texto, cada uno de los cuales contiene listas de rutas de confianza, con una ruta por cada línea. Cada ruta puede ser un archivo SWF individual, un archivo HTML o un directorio. Las líneas de comentario empiezan por el símbolo #. Por ejemplo, un archivo de configuración de confianza de Flash Player que contenga el siguiente texto concede el estado "de confianza" a todos los archivos en el directorio especificado y en todos sus subdirectorios:

# Confiar en los archivos de los siguientes directorios:
C:\Documents and Settings\All Users\Documents\SampleApp

Las rutas incluidas en un archivo de configuración de confianza deben ser siempre rutas locales o rutas de red SMB. Las rutas HTTP incluidas en un archivo de configuración de confianza se omiten; sólo los archivos locales pueden ser de confianza.

Para evitar conflictos, debe asignarse a cada archivo de configuración de confianza un nombre de archivo correspondiente a la aplicación de instalación y utilizar una extensión de archivo .cfg.

Un desarrollador que distribuye un archivo SWF ejecutado localmente a través de un instalador puede hacer que el instalador añada un archivo de configuración al directorio Global Flash Player Trust, concediendo así privilegios completos al archivo que distribuye. El instalador debe ejecutarse como usuario con derechos administrativos. A diferencia del archivo mms.cfg, el directorio Global Flash Player Trust se incluye para que los instaladores puedan conceder permisos de confianza. Tanto los usuarios administradores como los instaladores pueden designar aplicaciones locales de confianza a través del directorio Global Flash Player Trust.

También hay directorios Flash Player Trust para usuarios individuales (consulte la siguiente sección, Controles de usuario).

Controles de usuario

Flash Player proporciona al usuario tres mecanismos distintos para configurar permisos: la interfaz de usuario Configuración, el Administrador de configuración y el directorio User Flash Player Trust.

La interfaz de usuario Configuración y el Administrador de configuración

La interfaz de usuario Configuración es un mecanismo rápido e interactivo para establecer la configuración de un determinado dominio. El Administrador de configuración presenta una interfaz más detallada y permite realizar cambios globales que afectan a los permisos de muchos de los dominios o de todos ellos. Además, cuando un archivo SWF solicita un nuevo permiso que requiere tomar decisiones en tiempo de ejecución que afectan a la seguridad o privacidad, se muestran cuadros de diálogo en los que los usuarios pueden ajustar algunos parámetros de configuración de Flash Player.

El Administrador de configuración y la interfaz de usuario Configuración proporcionan las siguientes opciones relacionadas con la seguridad:

NOTA

 

Las configuraciones establecidas en el archivo mms.cfg (consulte Controles de usuario administrador) no se reflejan en el Administrador de configuración.

Para obtener información detallada sobre el Administrador de configuración, consulte www.adobe.com/go/settingsmanager_es (en inglés).

El directorio User Flash Player Trust

Los usuarios y los instaladores pueden registrar determinados archivos SWF locales como archivos de confianza. Estos archivos SWF se asignan al entorno limitado local de confianza. Pueden interactuar con cualquier otro archivo SWF y pueden cargar datos de cualquier ubicación local o remota. Un usuario designa un archivo como archivo de confianza en el directorio User Flash Player Trust, que es el mismo directorio donde se almacenan los objetos compartidos de Flash, en las siguientes ubicaciones (las ubicaciones son específicas del usuario actual):

Esta configuración sólo afecta al usuario actual, no a los demás usuarios que inician sesión en el equipo. Si un usuario sin derechos administrativos instala una aplicación en su parte del sistema, el directorio User Flash Player Trust permite al instalador registrar la aplicación como "de confianza" para dicho usuario.

Un desarrollador que distribuye un archivo SWF ejecutado localmente a través de un instalador puede hacer que el instalador añada un archivo de configuración al directorio User Flash Player Trust, concediendo así privilegios completos al archivo que distribuye. Incluso en esta situación, el archivo del directorio User Flash Player Trust se considera un control de usuario, porque se inicia como consecuencia de una acción del usuario (la instalación).

También hay un directorio Global Flash Player Trust que el usuario administrador o el instalador utiliza para registrar una aplicación para todos los usuarios de un equipo (consulte Controles de usuario administrador).

Controles de sitio Web (archivos de política entre dominios)

Para que los datos de un servidor Web estén disponibles para los archivos SWF de otros dominios, se puede crear un archivo de política entre dominios en el servidor. Un archivo de política entre dominios es un archivo XML que permite al servidor indicar que sus datos y documentos están disponibles para los archivos SWF que se encuentran disponibles en determinados dominios o en todos los dominios. Cualquier archivo SWF que se encuentre disponible en un dominio especificado por el archivo de política del servidor podrá acceder a los datos o activos desde dicho servidor.

Los archivos de política entre dominios afectan a varios activos, incluidos los siguientes:

En el resto del capítulo se proporcionan todos los detalles.

Sintaxis del archivo de política

En el ejemplo siguiente se muestra un archivo de política que permite el acceso a archivos SWF procedentes de *.example.com, www.friendOfExample.com y 192.0.34.166:

<?xml version="1.0"?>
<cross-domain-policy>
    <allow-access-from domain="*.example.com" />
    <allow-access-from domain="www.friendOfExample.com" />
    <allow-access-from domain="192.0.34.166" />
</cross-domain-policy>

Cuando un archivo SWF intenta acceder a datos desde otro dominio, Flash Player intenta cargar automáticamente un archivo de política desde dicho dominio. Si el dominio del archivo SWF que intenta acceder a los datos se incluye en el archivo de política, se podrá acceder a los datos de forma automática.

De forma predeterminada, los archivos de política deben denominarse crossdomain.xml y deben residir en el directorio raíz del servidor. Sin embargo, un archivo SWF puede buscar un nombre distinto o una ubicación de directorio diferente mediante una llamada al método Security.loadPolicyFile(). Un archivo de política entre dominios sólo se aplica al directorio desde el cual se carga y a sus directorios secundarios. Así pues, un archivo de política en el directorio raíz se aplica a todo el servidor pero un archivo de política cargado desde un subdirectorio arbitrario sólo se aplica a dicho directorio y a sus subdirectorios.

Un archivo de política sólo afecta al acceso al servidor concreto en el que reside. Por ejemplo, un archivo de política ubicado en https://www.adobe.com:8080/crossdomain.xml sólo se aplica a las llamadas para cargar datos realizadas a www.adobe.com en el puerto 8080 utilizando el protocolo HTTPS.

Un archivo de política entre dominios contiene una sola etiqueta <cross-domain-policy>, la cual no contiene ninguna o contiene varias etiquetas <allow-access-from>. Cada etiqueta <allow-access-from> contiene un atributo, domain, el cual especifica una dirección IP exacta, un dominio exacto o un dominio comodín (cualquier dominio). Los dominios comodín se indican mediante un solo asterisco (*), que incluye todos los dominios y todas las direcciones IP, o mediante un asterisco seguido por un sufijo, que incluye sólo los dominios que terminan con el sufijo especificado. Los sufijos deben empezar por un punto. Sin embargo, los dominios comodín con sufijos pueden incluir los dominios formados únicamente por el sufijo sin el punto inicial. Por ejemplo, se considera que foo.com forma parte de *.foo.com. Los comodines no pueden utilizarse en las especificaciones de dominio IP.

Si especifica una dirección IP, sólo se otorgará acceso a los archivos SWF cargados desde esa dirección IP mediante la sintaxis de IP (por ejemplo, http://65.57.83.12/flashmovie.swf), no a los archivos que se hayan cargado mediante una sintaxis de nombre de dominio. Flash Player no lleva a cabo la resolución DNS.

Se puede permitir el acceso a documentos procedentes de cualquier dominio, tal y como se muestra en el siguiente ejemplo:

<?xml version="1.0"?>
<!-- http://www.foo.com/crossdomain.xml -->
<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>

Cada etiqueta <allow-access-from> tiene además el atributo opcional secure, que tiene el valor predeterminado true. Se puede establecer el atributo en el valor false si el archivo de política está en un servidor HTTPS y se desea permitir que los archivos SWF de un servidor no HTTPS carguen datos del servidor HTTPS.

Establecer el atributo secure en false puede poner en peligro la seguridad proporcionada por HTTPS. En concreto, establecer este atributo en false deja el contenido seguro expuesto a posibles ataques de fisgones y suplantadores. Adobe recomienda encarecidamente no establecer el atributo secure en false.

Si los datos que se van a cargar están en un servidor HTTPS pero el archivo SWF que los carga está en un servidor HTTP, Adobe recomienda mover el archivo SWF que realiza la carga a un servidor HTTPS para poder conservar todas las copias de los datos seguros bajo la protección de HTTPS. Sin embargo, si se decide mantener el archivo SWF que realiza la carga en un servidor HTTP, deberá añadirse el atributo secure="false" a la etiqueta <allow-access-from>, como se muestra en el código siguiente:

<allow-access-from domain="www.example.com" secure="false" /> 

Un archivo de política que no contenga ninguna etiqueta <allow-access-from> tiene el mismo efecto que un servidor que no tenga ninguna política.

Archivos de política de socket

Los objetos de ActionScript crean instancias de dos tipos distintos de conexiones de servidor: conexiones de servidor basadas en documentos y conexiones de socket. Los objetos de ActionScript como Loader, Sound, URLLoader y URLStream crean instancias de conexiones de servidor basadas en documentos y cada una de ellas carga un archivo de un URL. Los objetos Socket y XMLSocket de ActionScript realizan conexiones de socket, que funcionan con datos de transmisión y no con documentos cargados. Flash Player admite dos tipos de archivos de política: los archivos de política basados en documentos y los archivos de política de socket. Las conexiones basadas en documentos requieren archivos de política basados en documentos, mientras que las conexiones de socket requieren archivos de política de socket.

Flash Player requiere que un archivo de política se transmita con el mismo tipo de protocolo que desea utilizar la conexión que se intenta establecer. Por ejemplo, cuando se incluye un archivo de política en el servidor HTTP, los archivos SWF de otros dominios pueden cargar datos de él como un servidor HTTP. Sin embargo, si no se proporciona un archivo de política de socket en el mismo servidor, se prohíbe a los archivos SWF de otros dominios que conecten con el servidor en el socket. La vía por la cual se recupera un archivo de política de socket debe coincidir con la vía empleada en la conexión.

Un archivo de política proporcionado por un servidor de socket tiene la misma sintaxis que cualquier otro archivo de política, pero debe especificar también los puertos a los que se concede el acceso. Cuando un archivo de política procede de un puerto cuyo número es inferior a 1024, dicho archivo puede conceder acceso a cualquier puerto; cuando un archivo de política procede del puerto 1024 o superior, sólo puede conceder acceso a otros puertos 1024 y superiores. Los puertos permitidos se especifican en el atributo to-ports de la etiqueta <allow-access-from>. Se aceptan como valor los números de puerto únicos, los intervalos de puertos y los comodines.

A continuación se muestra un ejemplo de un archivo de política XMLSocket:

<cross-domain-policy> 
   <allow-access-from domain="*" to-ports="507" /> 
   <allow-access-from domain="*.example.com" to-ports="507,516" /> 
   <allow-access-from domain="*.example2.com" to-ports="516-523" /> 
   <allow-access-from domain="www.example2.com" to-ports="507,516-523" /> 
   <allow-access-from domain="www.example3.com" to-ports="*" /> 
</cross-domain-policy> 

Cuando se introdujeron por primera vez los archivos de política en Flash Player 6, no se admitían los archivos de política de socket. Las conexiones a servidores de socket se autorizaban a través de un archivo de política desde la ubicación predeterminada del archivo de política entre dominios, en un servidor HTTP del puerto 80 del mismo host que el servidor de socket. Para poder conservar la organización de servidores actual, Flash Player 9 todavía admite esta capacidad. Sin embargo, de forma predeterminada, Flash Player recupera ahora un archivo de política de socket en el mismo puerto que la conexión de socket. Si se desea utilizar un archivo de política basado en HTTP para autorizar una conexión de socket, se debe solicitar de forma explícita el archivo de política HTTP, mediante código como el siguiente:

Security.loadPolicyFile("http://socketServerHost.com/crossdomain.xml")

Además, para poder autorizar conexiones de socket, un archivo de política HTTP sólo debe proceder de la ubicación predeterminada del archivo de política entre dominios y no de ninguna otra ubicación HTTP. Un archivo de política obtenido de un servidor HTTP autoriza de forma implícita el acceso del socket a todos los puertos 1024 y superiores; los atributos to-ports de un archivo de política HTTP se omiten.

Para más información sobre los archivos de política de socket, consulte Conexión a sockets.

Precarga de archivos de política

La carga de datos desde un servidor o la conexión a un socket es una operación asíncrona y Flash Player simplemente espera que el archivo de política entre dominios finalice la descarga antes de iniciar la operación principal. Sin embargo, la extracción de datos de píxeles de las imágenes o la extracción de datos de muestra de los sonidos es una operación sincrónica, y el archivo de política entre dominios debe cargarse antes de extraer los datos. Al cargar un medio, es necesario especificar que busque un archivo de política entre dominios:

Si se establece uno de estos parámetros, Flash Player comprueba primero si hay algún archivo de política que ya se haya descargado para dicho dominio. A continuación, valora si las llamadas al método Security.loadPolicyFile() que hay pendientes están dentro del ámbito y, si es así, espera a que tales llamadas se produzcan. Luego busca el archivo de política entre dominios en la ubicación predeterminada del servidor.

Controles de autor (desarrollador)

La principal API de ActionScript que se utiliza para conceder privilegios de seguridad es el método Security.allowDomain(), que concede privilegios a archivos SWF en los dominios especificados. En el siguiente ejemplo, un archivo SWF concede acceso a archivos SWF que se encuentran disponibles en el dominio www.example.com:

Security.allowDomain("www.example.com")

Este método concede permisos para lo siguiente:

El principal objetivo de llamar al método Security.allowDomain() es conceder permiso para que los archivos SWF de un dominio exterior puedan manipular mediante script el archivo SWF, a través de una llamada al método Security.allowDomain(). Para más información, consulte Reutilización de scripts.

Cuando se especifica una dirección IP como parámetro en el método Security.allowDomain(), no se permite el acceso de todas las partes que tienen su origen en la dirección IP especificada. Sólo se permite el acceso de la parte que contiene la dirección IP especificada en su URL, y no un nombre de dominio que corresponda a la dirección IP. Por ejemplo, si el nombre de dominio www.example.com corresponde a la dirección IP 192.0.34.166, una llamada a Security.allowDomain("192.0.34.166") no concede el acceso a www.example.com.

Se puede pasar el comodín "*" al método Security.allowDomain() para permitir el acceso desde todos los dominios. Como se concede permiso a los archivos SWF de todos los dominios para que manipulen mediante script el archivo SWF que realiza la llamada, se debe utilizar el comodín "*" con precaución.

ActionScript incluye una segunda API de permiso, denominada Security.allowInsecureDomain(). Este método realiza lo mismo que el método Security.allowDomain() y además, cuando se llama desde un archivo SWF que se encuentra disponible en una conexión HTTPS segura, permite el acceso al archivo SWF que realiza la llamada por parte de otros archivos SWF que se encuentran disponibles en un protocolo no seguro, como HTTP. Sin embargo, no es seguro permitir la reutilización de scripts entre archivos desde un protocolo seguro (HTTPS) y desde protocolos no seguros (como HTTP); si se permite, se deja el contenido seguro expuesto a posibles ataques de fisgones y suplantadores. Este tipo de ataques funcionan del siguiente modo: como el método Security.allowInsecureDomain() permite que los archivos SWF proporcionados a través de conexiones HTTP puedan acceder a los datos de HTTPS seguro, un atacante interpuesto entre el servidor HTTP y los usuarios podría sustituir el archivo SWF de HTTP por uno propio y acceder así a los datos HTTPS.

Otro método importante relacionado con la seguridad es el método Security.loadPolicyFile(), que hace que Flash Player compruebe si hay un archivo de política entre dominios en una ubicación no estándar. Para más información, consulte Controles de sitio Web (archivos de política entre dominios).


Flash CS3

 

Enviarme un mensaje de correo electrónico cuando se añadan comentarios a esta página | Informe de comentarios

Página actual: http://livedocs.adobe.com/flash/9.0_es/main/00000349.html