Documentación de Flash CS3 |
|||
| Programación con ActionScript 3.0 > Seguridad de Flash Player > Reutilización de scripts | |||
Si hay dos archivos SWF escritos en ActionScript 3.0 en el mismo dominio (por ejemplo, el URL de un archivo SWF es http://www.example.com/swfA.swf y el URL del otro es http://www.example.com/swfB.swf), un archivo SWF puede examinar y modificar las variables, objetos, propiedades, métodos, etc. en el otro archivo y viceversa. Esto se denomina reutilización de scripts.
La reutilización de scripts no se permite entre archivos SWF AVM1 y archivos SWF AVM2. Un archivo SWF AVM1 es aquél que se crea en ActionScript 1.0 o ActionScript 2.0. (AVM1 y AVM2 se refieren a la máquina virtual ActionScript.) Sin embargo, es posible utilizar la clase LocalConnection para enviar datos entre AVM1 y AVM2.
Si los dos archivos SWF escritos en ActionScript 3.0 están en dominios diferentes (por ejemplo, http://siteA.com/swfA.swf y http://siteB.com/siteB.swf), de forma predeterminada Flash Player no permite a swfA.swf usar scripts en swfB.swf, ni viceversa. Un archivo SWF concede permiso a archivos SWF de otros dominios mediante una llamada a Security.allowDomain(). Si se llama a Security.allowDomain("siteA.com"), swfB.swf concede permiso a los archivos SWF de siteA.com para utilizarlo en scripts.
En cualquier operación entre dominios es importante tener claro qué dos partes están involucradas. En esta sección, llamaremos parte que accede a la que lleva a cabo la reutilización de scripts (normalmente el archivo SWF que accede a otro) y parte a la que se accede a la otra (por lo general, el archivo SWF al que se accede). Si siteA.swf usa scripts en siteB.swf, siteA.swf será la parte que accede y siteB.swf será la parte a la que se accede, tal y como se indica en la siguiente ilustración:
Los permisos entre dominios establecidos con el método Security.allowDomain() son asimétricos. En el ejemplo anterior, siteA.swf puede manipular mediante script a siteB.swf, pero siteB.swf no puede hacerlo con siteA.swf, ya que siteA.swf no ha llamado al método Security.allowDomain() para dar permiso a los archivos SWF de siteB.com para manipularlo mediante script. Para configurar permisos simétricos, es necesario que ambos archivos SWF llamen al método Security.allowDomain().
Flash Player protege los archivos SWF de la creación de scripts entre dominios originada tanto en otros archivos SWF como en archivos HTML. El uso de scripts de HTML en SWF puede producirse mediante funciones callback establecidas a través del método ExternalInterface.addCallback(). Cuando el uso de scripts de HTML en SWF traspasa los dominios, el archivo SWF debe llamar al método Security.allowDomain() para evitar que la operación falle, tanto si es la parte que accede como si es la parte a la que se accede. Para más información, consulte Controles de autor (desarrollador).
Además, Flash Player proporciona controles de seguridad para el uso de scripts de SWF en HTML. Para más información, consulte Control del acceso a scripts en una página Web de alojamiento.
Algunas propiedades y métodos del objeto Stage sólo están disponibles para los objetos Sprite o MovieClip de la lista de visualización.
Sin embargo, el objeto Stage tiene un propietario: el primer archivo SWF cargado. De forma predeterminada, las siguientes propiedades y métodos del objeto Stage sólo están disponibles para los archivos SWF que se encuentran en el mismo entorno limitado de seguridad que el propietario de Stage:
|
Propiedades |
Métodos |
|
|
|
|
|
|
displayState |
|
|
|
frameRate |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Para que un archivo SWF de un entorno limitado ajeno al del propietario de Stage pueda acceder a estas propiedades y métodos, el archivo SWF del propietario de Stage debe llamar al método Security.allowDomain() para permitir el dominio del entorno limitado externo. Para más información, consulte Controles de autor (desarrollador).
La propiedad frameRate es especial, ya que cualquier archivo SWF puede leerla. Sin embargo, sólo pueden cambiar la propiedad los archivos que se encuentran en el entorno limitado de seguridad del propietario de Stage (o los que han obtenido permiso a través de una llamada al método Security.allowDomain()).
También hay restricciones relativas a los métodos removeChildAt() y swapChildrenAt() del objeto Stage, pero son distintas a las demás restricciones. En lugar de tener que estar en el mismo dominio que el propietario de Stage, para llamar a estos métodos, el código debe estar en el mismo dominio que el propietario de los objetos secundarios afectados, o bien los objetos secundarios pueden llamar al método Security.allowDomain().
Existen restricciones con respecto a la capacidad de un archivo SWF para acceder a los objetos de visualización cargados desde otros entornos limitados. Para que un archivo SWF pueda acceder a un objeto de visualización creado por otro archivo SWF en un entorno limitado distinto, el archivo SWF al que se accede debe llamar al método Security.allowDomain() para permitir el acceso desde el dominio del archivo SWF que accede. Para más información, consulte Controles de autor (desarrollador).
Para acceder a un objeto Bitmap cargado por un objeto Loader, debe existir un archivo de política entre dominios en el servidor de origen del archivo de imagen y debe conceder permiso al dominio del archivo SWF que intenta acceder al objeto Bitmap (consulte Controles de sitio Web (archivos de política entre dominios)).
El objeto LoaderInfo correspondiente a un archivo cargado (y al objeto Loader) contiene las tres propiedades siguientes, que definen la relación entre el objeto cargado y el objeto Loader: childAllowsParent, parentAllowsChild y sameDomain.
Los eventos relacionados con la lista de visualización tienen limitaciones de acceso de seguridad que dependen del entorno limitado donde se encuentre el objeto de visualización que distribuye el evento. Un evento de la lista de visualización tiene fases de propagación y captura (descritas en el Gestión de eventos). Durante las fases de propagación y captura, un evento migra del objeto de visualización de origen a través de los objetos de visualización principales en la lista de visualización. Si un objeto principal se encuentra en un entorno limitado de seguridad distinto al del objeto de visualización de origen, la fase de captura y propagación se detiene debajo de dicho objeto principal, a menos que exista una confianza mutua entre el propietario del objeto principal y el propietario del objeto de origen. Esta confianza mutua se obtiene del siguiente modo:
Security.allowDomain() para confiar en el dominio del archivo SWF propietario del objeto de origen.Security.allowDomain() para confiar en el dominio del archivo SWF propietario del objeto principal.El objeto LoaderInfo correspondiente a un archivo cargado (y al objeto Loader) contiene las dos propiedades siguientes, que definen la relación entre el objeto cargado y el objeto Loader: childAllowsParent y parentAllowsChild.
En los eventos distribuidos desde objetos que no sean objetos de visualización, no se realizan comprobaciones de seguridad.
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/00000354.html