Consejo rápido Una guía para los archivos de políticas de dominios cruzados

Todos los desarrolladores de Flash o Flex que han tenido que acceder a recursos remotos han encontrado un archivo de política crossdomain.xml en algún momento. Este artículo analiza qué son estos archivos de políticas, cómo funcionan y cómo puede crear uno por sí mismo..

Ejemplo

Echemos un vistazo a un ejemplo de lo que estamos hablando:

¿Qué tiene de especial esto? Bueno, el SWF está cargando la imagen sonriente desde http://mytestgae.appspot.com/images/smiley.jpg, no desde el dominio Activetuts +. Sin un archivo de políticas de dominio cruzado, intentar cargar la imagen activaría un error de seguridad.


¿Qué es un archivo de política entre dominios??

El modelo de seguridad conocido como la política de "mismo origen", implementado por la mayoría de los navegadores web modernos, impide el acceso o la modificación de algunos tipos de contenido si el archivo existe en otro dominio. No es una regla dura y rápida; Las páginas HTML mostrarán felizmente imágenes y HTML de páginas en otros dominios. Pero para JavaScript, la misma política de origen impide que un documento o script cargado desde un origen obtenga o establezca las propiedades de un documento desde otro.

Flash incluye una política de seguridad similar que generalmente evita que una aplicación Flash acceda a datos alojados en un dominio remoto. Sin embargo, hay muchas circunstancias en las que no solo es útil sino que se espera que los recursos se accedan de forma remota. Un álbum de fotos en línea se vería limitado si las aplicaciones externas no pudieran descargar sus imágenes. También sería una tontería si un servicio web no permitiera que las aplicaciones externas interactúen con él..

Por este motivo, es posible crear un archivo XML, llamado crossdomain.xml, que especifica cómo una aplicación Flash alojada en un dominio remoto puede acceder a los datos de un dominio. En su mayor parte, estos archivos de políticas son bastante simples, pero hay algunos detalles que es útil tener en cuenta..

Si está alojando contenido al que desea que accedan aplicaciones externas de Flash, deberá crear un archivo crossdomain.xml. Empecemos echando un vistazo a un ejemplo básico..


Paso 1: Un archivo crossdomain.xml básico

Aquí hay un archivo crossdomain.xml muy simple. Cuando este archivo está alojado en la raíz de su dominio, permite que las aplicaciones Flash externas accedan a todos los recursos de su dominio..

    

El archivo de política contiene una sola etiqueta. Dentro de esto puedes tener cero o más. etiquetas Cada La etiqueta se puede usar para definir un dominio o dirección IP desde la cual una aplicación Flash puede acceder a los recursos locales. El atributo domain = "*" Especifica que todos los dominios tienen acceso. Esto es gracias al comodín de asterisco, que se utiliza aquí para hacer coincidir todos los dominios y direcciones IP.

Para la mayoría de las situaciones, este archivo de política "permitir todo" es suficiente. Permite que las aplicaciones Flash accedan a todos los recursos públicos, mientras que cualquier seguridad que tenga (como las páginas protegidas con contraseña) seguirá impidiendo que las aplicaciones Flash accedan a datos confidenciales..

(Tenga en cuenta que no puede poner un archivo crossdomain.xml en su dominio que permita que los SWF también en su dominio accedan a archivos remotos en otro ¡dominio!)


Paso 2: Dominios Especificados

Si no desea permitir el acceso global a sus recursos públicos, el atributo de dominio en el La etiqueta se puede utilizar para otorgar acceso a dominios específicos.

Puede especificar un dominio en su totalidad. El siguiente ejemplo le dará acceso a las aplicaciones Flash alojadas en el dominio www.example.com.

Puede usar el comodín de asterisco para hacer coincidir los dominios que terminan con el sufijo dado. Aquí otorgamos acceso a las aplicaciones Flash en los dominios example.com, www.example.com, any.example.com, etc..


Paso 3: Direcciones IP especificadas

Puede especificar el acceso por dirección IP de la misma manera que puede otorgar acceso a las aplicaciones Flash alojadas en dominios específicos. Se utilizan la misma etiqueta y los mismos atributos, excepto en este caso que usa una dirección IP:


Paso 4: Trabajando con HTTPS

Por defecto, una aplicación Flash alojada en un servidor HTTPS solo puede acceder a recursos en servidores HTTPS remotos. Pero dada la sobrecarga que HTTPS puede agregar a un servidor, es posible que no quiera usarlo. En este caso configurando el seguro atribuir a falso permitirá que una aplicación Flash en un servidor HTTPS acceda a los datos desde un servidor HTTP.


Paso 5: Aplicaciones Flash remotas

Entonces, ¿qué sucede si no desea que las aplicaciones Flash remotas accedan a sus datos? Puede crear un archivo crossdomain.xml que no incluya ninguno etiquetas:

  

O simplemente no puede tener un archivo crossdomain.xml en absoluto.


Paso 6: Control granular de subdirectorios.

Un archivo de políticas de dominio cruzado controlará el acceso al directorio en el que reside, y todos los subdirectorios debajo de él. Así es como colocar un archivo de política "permitir todo" en la raíz de su dominio le permite acceder a todo su dominio. Pero puede haber situaciones en las que solo desee permitir el acceso a un determinado subdirectorio.

Con las últimas versiones de Flash Player, esto requiere dos archivos XML. Primero debe colocar un archivo crossdomain.xml en la raíz de su dominio que permita a Flash procesar archivos de políticas de dominio cruzado adicionales dentro de los subdirectorios. Esto se hace con la etiqueta. En el siguiente ejemplo configuramos la Políticas de dominio cruzado permitidas atribuir a todos, lo que significa que los archivos de políticas de dominio cruzado que pueden existir en los subdirectorios serán procesados. Este comportamiento es un cambio en la actualización 3 de Flash Player 9 y versiones posteriores. Anteriormente, los archivos de políticas en los subdirectorios se procesaban de forma predeterminada sin tener que configurar Políticas de dominio cruzado permitidas atributo.

Tenga en cuenta que no hemos añadido ninguna Etiquetas, lo que significa que en ausencia de un archivo crossdomain.xml adicional en los subdirectorios, las aplicaciones Flash remotas no tendrán acceso a los recursos en este servidor.

Puede encontrar más información sobre las opciones de política de meta en este artículo..

   

A continuación, coloque un archivo crossdomain.xml en el subdirectorio que desea controlar.

Para ver un ejemplo de esto en acción, echa un vistazo a este archivo. Este archivo de políticas, en la raíz del dominio http://mytestgae.appspot.com/, utiliza el etiqueta para delegar el control en cualquier archivo crossdomain.xml que pueda existir en los subdirectorios. Luego, este archivo de políticas en el subdirectorio / images / otorga acceso completo al directorio y cualquier subdirectorio debajo de él. Entonces, una aplicación Flash remota podría acceder a la imagen de la cara sonriente en el directorio de imágenes de la siguiente manera:

      

Sin embargo, no se permite el acceso a la imagen de la cara sonriente en el directorio / images-restringido / porque no hay ningún archivo crossdomain.xml en el directorio restringido de imágenes para anular el acceso (falta de) otorgado por el archivo crossdomain.xml en el Raíz del dominio. Ejecutar el siguiente código dará lugar a una excepción:

      

La excepción dice:
SecurityError: Error # 2123: Violación de la zona de seguridad: LoaderInfo.content: file: /// D | /CrossDomain.swf no puede acceder a http://mytestgae.appspot.com/images-restricted/smiley.jpg. No hay archivos de política de acceso concedido.
en flash.display :: LoaderInfo / obtener contenido ()
en MethodInfo-635 ()


Paso 7: Política de dominio cruzado vs. Firewall

Por lo tanto, a partir de la información anterior, parece que los archivos de políticas de dominios cruzados se pueden usar para restringir efectivamente el acceso a las aplicaciones Flash que no se encuentran en su propio dominio. Si bien eso es cierto, no debe confiar en un archivo de políticas de dominio cruzado para restringir el acceso a la información confidencial. Si bien Flash puede respetar un archivo de política crossdomain.xml, otras plataformas como PHP no lo harán. Haga una búsqueda de PHP Flash Proxy para ver lo que quiero decir. Al utilizar un proxy, es posible obtener acceso a cualquier información disponible públicamente, independientemente de la existencia de archivos de políticas de varios dominios. Y ni siquiera tiene que pagar por un servidor PHP, como demostraré en un artículo futuro, Google App Engine se puede usar como un proxy sin costos iniciales.

La conclusión es que los archivos de políticas de dominios cruzados brindan una forma de otorgar acceso selectivo a los recursos locales mediante aplicaciones Flash remotas, pero solo si todos cumplen con las reglas. Si desea asegurarse de que sus datos privados permanezcan privados, no hay sustituto para un firewall.


Conclusión

Tratar con archivos de políticas de dominios cruzados no tiene por qué ser complicado. Una vez que entienda los conceptos básicos de cómo funcionan, es bastante fácil conceder o restringir el acceso a sus datos mediante aplicaciones Flash remotas. Solo tenga en cuenta que no son tan seguros como parecen inicialmente.

Espero que te haya gustado este Consejo rápido, gracias por leer.!