Gran parte del modelo de seguridad utilizado por los motores de ejecución de Flash Player y AIR se basa en el dominio de origen para los archivos SWF cargados, HTML, medios y otros recursos. El código ejecutable de un archivo de un dominio concreto de Internet, tal como www.ejemplo.com, podrá tener siempre acceso a todos los datos de dicho dominio. Estos activos se incluyen en el mismo grupo de seguridad, conocido como
entorno limitado de seguridad
. (Para obtener más información, consulte
Entornos limitados de seguridad
.)
Por ejemplo, el código ActionScript de un archivo SWF puede cargar archivos SWF, mapas de bits, audio, archivos de texto y otros activos de su propio dominio. Asimismo, la reutilización de scripts siempre está permitida entre dos archivos del mismo dominio, siempre que ambos archivos se hayan escrito utilizando ActionScript 3.0. La
reutilización de scripts
es la capacidad de un archivo para utilizar ActionScript para acceder a las propiedades, los métodos y los objetos definidos por el código en otro archivo.
La reutilización de scripts no es posible entre los archivos SWF escritos en ActionScript 3.0 y los escritos en versiones anteriores de ActionScript; sin embargo, estos archivos pueden comunicarse a través de la clase LocalConnection. Por otro lado, está prohibido de forma predeterminada que un archivo SWF reutilice los scripts de los archivos SWF de ActionScript 3.0 pertenecientes a otros dominios, así como que cargue datos de otros dominios. Sin embargo, este permiso se puede conceder si se llama al método
Security.allowDomain()
del archivo SWF cargado. Para obtener más información, consulte
Reutilización de scripts
.
Las reglas de seguridad básicas que siempre se aplican de forma predeterminada son:
-
Los recursos del mismo entorno limitado de seguridad tienen acceso libre entre ellos.
-
El código ejecutable de los archivos de un entorno limitado remoto no tienen nunca acceso a archivos y datos locales.
Los motores de ejecución de Flash Player y AIR consideran los siguientes componentes como dominios individuales y configuran entornos limitados de seguridad independientes para cada uno de ellos:
-
http://example.com
-
http://www.example.com
-
http://store.example.com
-
https://www.example.com
-
http://192.0.34.166
Incluso si un dominio con nombre, como http://example.com, corresponde a una dirección IP específica, como http://192.0.34.166, el motor de ejecución configura entornos limitados de seguridad independientes para cada uno de ellos.
Hay dos métodos básicos que puede utilizar un desarrollador para conceder a un archivo SWF el acceso a los activos de entornos limitados ajenos al del archivo SWF:
En los modelos de seguridad del motor de ejecución de AIR y Flash Player, existe una diferencia entre cargar contenido y extraer o acceder a datos. El
contenido
se define como medios, incluidos los medios visuales que los motores de ejecución pueden mostrar, audio, vídeo o un archivo SWF que incluye medios mostrados. Se define como
datos
aquello que solo es accesible para el código El contenido y los datos se cargan de modos diferentes.
-
Carga de contenido: el contenido se puede cargar utilizando clases como Loader, Sound y NetStream, mediante etiquetas MXML al utilizar Flex o con etiquetas HTML en una aplicación de AIR.
-
Extracción de datos: los datos se pueden extraer de contenido de medios cargados a través de objetos Bitmap, los métodos
BitmapData.draw()
y
BitmapData.drawWithQuality()
, la propiedad
Sound.id3
o el método
SoundMixer.computeSpectrum()
. El método
drawWithQuality
está disponible en Flash Player 11.3 y versiones posteriores; AIR 3.3 y versiones posteriores.
-
Acceso a datos: se puede acceder a datos directamente cargándolos desde un archivo externo (como un archivo XML) a través de clases como URLStream, URLLoader, FileReference, Socket y XMLSocket. AIR proporciona clases adicionales para cargar datos como, por ejemplo, FileStream, y XMLHttpRequest.
El modelo de seguridad de Flash Player define reglas distintas para cargar contenido y acceder a los datos. En general, hay menos restricciones para cargar contenido que para acceder a los datos.
En general, el contenido (archivos SWF, mapas de bits, archivos MP3 y vídeos) puede cargarse desde cualquier origen, pero si procede de un dominio ajeno al del contenido o al código de carga, se ubicará en un entorno limitado de seguridad independiente.
Hay algunos obstáculos para cargar contenido:
-
De forma predeterminada, los archivos SWF locales (cargados desde una dirección fuera de la red como, por ejemplo, el disco duro de un usuario) se clasifican en el entorno limitado local con sistema de archivos. Estos archivos no pueden cargar contenido de la red. Para obtener más información, consulte
Entornos limitados locales
.
-
Los servidores RTMP (Real-Time Messaging Protocol) pueden limitar el acceso al contenido. Para obtener más información, consulte
Contenido proporcionado a través de servidores RTMP
.
Si el medio cargado es una imagen, audio o vídeo, sus datos (ya sean píxeles o sonidos) serán accesibles para un archivo SWF que no pertenezca a su entorno limitado de seguridad solo si el dominio de dicho archivo SWF se haya incluido en un archivo de política en el dominio de origen del medio. Para obtener información más detallada, consulte
Acceso a medios cargados como datos
.
Otros tipos de datos cargados contienen texto o archivos XML, que se cargan con un objeto URLLoader. De nuevo en este caso, para acceder a los datos de otro entorno limitado de seguridad, deben concederse permisos mediante un archivo de política URL en el dominio de origen. Para obtener información más detallada, consulte
Uso de URLLoader y URLStream
.
Nota:
los archivos de política nunca se requieren para el código que se ejecuta en el entorno limitado de la aplicación de AIR para cargar datos o contenido remoto.