Este tip me hizo falta por mucho tiempo y me valió horas y horas de investigación.
En donde trabajo tenemos aplicaciones Flash que he desarrollado, y en su mayoría se alimentan de datos por medio de WebServices. Todo funcionaba impecable hasta que se actualizó a Flash Player 10.
Los datos no eran enviados. Después de buscar mucho, me enteré que la seguridad en esta versión es aún mayor y que el archivo crossdomain.xml tiene que tener algunas modificaciones.
Las modificaciones más importante son la asignación de cual puerto es usado para el traspaso de información y el atributo de seguridad (secure) para paginas HTTPS.
Paso la forma correcta de armar el crossdomain.xml, y que se tenga acceso total al contenido del WebService.
Código :
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*" secure="true" />
<!--
This domain can accept any header from a SWF file on any subdomain of example.com and supports https requests
-->
<allow-http-request-headers-from domain="*" headers="*" secure="true" />
</cross-domain-policy>
esto solo es afectado con WebServices o tambien con AMF (amfphp o weborb)??? Por:master_of_puppetz
Afecta a toda aplicación que use crossdomain como metodo de autenticación.
Saludos Martín Por:Martincho7
me has salvado el videojuego! Por:gracias tio!-blog
jejej... Merece, era la idea ayudar a otros que "sufran" de lo mismo.
Saludos Martín Por:Martincho7
Excelente dato. Lo Máximo Martín Por:Mezcal-blog
Muy bueno el comentario, aumenta la seguridad en aplicaciones flash. Por:Danisam-blog
Me siento bien sabiendo que no fui el único que tuvo este inconveniente con la seguridad.
Salu!
Martín Por:Martincho7
Hola, necesito cambiar los permisos en mi servidor para poder visualizar contenidos RSS cargados por un fichero .swf, y he visto este post, pero no se como hacer ni donde colocar el fichero crossdomain.xml para que funciones, agraceceria su ayuda, gracias de antemano un saludo. Por:Frank-blog
Frank-blog :
Hola, necesito cambiar los permisos en mi servidor para poder visualizar contenidos RSS cargados por un fichero .swf, y he visto este post, pero no se como hacer ni donde colocar el fichero crossdomain.xml para que funciones, agraceceria su ayuda, gracias de antemano un saludo.
Buenas Frank-blog,
El archivo crossdomain.xml debe ir en la raiz del sitio ej:
Código :
www.elnombredetudominio.com/crossdomain.xml
pero debes tener en cuenta que el RSS al que consultas esta en el mismo servidor. En caso contrario si el RSS esta fuera de tu servidor tienes que pedir que pongan el crossdomain en ese servidor.
Espero haber sido de ayuda.
Saludos Martín Por:Martincho7
si muchas gracias Por:Frank-blog
Hola! el archivo crossdomain.xml fisicamente donde se debe poner.. yo estoy usando Sun One y hay una carpeta donde se ponen los archivos .war exactamente donde debo poner ese xml? yo no uso dominios solo http://ip:puerto/contexto
GRacias! Por:Cocoliza-blog
por cierto lo probe con Jboss y encontre que se debe poner en la carperta
\jboss\server\default\deploy\jbossweb-tomcat55.sar\ROOT.war\ y si, poniendolo ahi funciono perfectamente, pero no encuentro en donde deba ponerlo para SunOne. saludos! Por:Cocoliza-blog
Genial!
No sabes las horas de stress mental que me ahorraste!
Gracias! Por:MickyMike-blog
MMMMMMMMMMMMmmmiiiiiiiillloooooooon de gracias
Me salvaste mi dinerito de la paga jejjeje
graaaaaaaaaaaaaaacias Por:juan camilo acosta arango
una consulta, tengo mi aplicacion en flex builder y tengo problemas al invocar los web services en otro servidor distinto al que he programado, quiero saber en donde debo poner el archivo crossdomain.xml ???? gracias Por:yoni-blog
Buenas,
El archivo crossdomain.xml debe ir en el servidor donde corre el webservice.
Saludos Martín Por:Martincho7
Hola, yo estoy usando el FileReference para upload imagenes, pero tengo el problema del crossdomain, cosa que con el flash player 9 no tenia. configuré el cross domain.xml como propone Martincho7 pero siempre meda el erro..
Alguien sabeque puede estar pasando?? Por:nigma
Buenas, Si esta el archivo tal cual publicado y está puesto en la raíz del server a donde haces el Upload tiene que funcionar. Para despejar dudas cuando lo probas desde Flash al desarrollar funciona? Si da error que error?
Saludos Martín Por:Martincho7
recorrí muchos blogs y este articulo fue el mas sencillo y el unico que me resolvio el problemas.. muchas gracias Por:Jorgge.a-blog
Me alegro Jorgge.a-blog que sea de ayuda.
Saludos Martín Por:Martincho7
Gracias men, me salvaste de una!!!!!! Muchas gracias por el dato Por:Jonatan-blog
lo siento pero no me sirvió... estoy tratando de cargar un xml de un dominio a u data grid que está en otro dominio. He usado el crossdomain.xml que comentas pero no me funciona... Por:mutiu
Buenas mutiu el crossdomain.xml funciona correctamente pero debe ir en el servidor (o dominio) al cual le solicitas los “datos”. NO debe estar en el mismo servidor que tienes el SWF, pero seguramente puede pasar que quieras obtener información de un servidor al que no puedas meterle el crossdomain.xml.
De todas formas tengo un “truquito” que uso a menudo para cuando pasa este problema, pero para poder usarlo tienes que tener PHP en tu servidor. El truco conciste en usar PHP (proxy.php) para traer los datos desde otro dominio y mostrarlo en una pagina PHP en TU dominio.
( en caso que existan parámetros en vez de usar "&" usa "|" ej: ....tiempo.xml?par1=ppp|par2=jjj )
De esta forma tu SWF lee una pagina local y no necesita usar el crossdomain.xml en ningún otro lado.
Espero te sirva a ti o cualquiera que pase por aquí.
Saludos Martín Por:Martincho7
Todo el código publicado en esta página es vulnerable.
Una política abierta del crossdomain.xml permite, por ejemplo, ataques CSRF.
El script en php que te permite especificar que file quieres leer permite obtener archivos locales. Por:hkm-blog
También me ha hecho falta cuando entran a mi sitio sin la www entonces pongo un crossdomain para permitir accesso desde www.dominio.com y dominio.com Por:leoncitoamx
Por:Carlos-blog
Merece ...me alegra mucho que a tantos meses de crear el Tip aun ayude a colegas.
Saludos Martín Por:Martincho7
Funcionó de las mil Maravillas! lo que me costó fue dar con el problema Por:Agustin Amenabar-blog
Como bien dijohkm-blog, todo el código publicado aquí es vulnerable, por no decir hipervulnerable.
En el archivo crossdomain, si se desea leer xml u otros documentos externos al dominio habría que especificar permiso para los puertos 80 y 443 únicamente, ya q el standar son esos puertos y no se m ocurre pensar q yahoo devolvería su xml por un puerto diferente, y sin q lo especifique claro.
El archvo de servidor, en este caso php, debería d enfocarse d otro modo, por ejemplo uno d ellos sería crear un array en el php con los posibles dominios a leer, por ejemplo:
$arDomain=array('https://www.cam.es/','http://www.yahoo.com/');
y en la url del php una variable con el valor de la posición del array q se desee, por ejemplo una varible llamada url, q cuando el swf solicite el script de servidor pida algo como:
dirscript.php?url=1&rute=tiempo.xml
y habría q tratar la varible url en el php de un modo similar a:
readfile($arDomain[$_GET[url]].$_GET[rute]);
Es decir q la url de yahoo debe quedar dentro del php.
Hay mucho más modos de hacerlo un poco más seguro, en cualquier caso recomiendo no usar los script de ejemplo q aquí se exponen, es una invitación a que se apoderen del sistema Por:unlector-blog
si se ve el código q escribí arriba, es gialmente vulnrable ya que habría q definir antes d read file que sucede si la variable url no se corresponde con un posible valor del array, ya q tal y como está el ejempo anterior si en la url:
dirscript.php?url=1&rute=tiempo.xml
se cambia a:
dirscript.php?url=a&rute=actualdominio.index
como se puede ver es igual de vulnerable, por eso se hace necesario definir algo como:
UUUuu, es lo mas explicito que he encontrado en un ardua busqueda por ese error...
de casualidad saben si no existe un listado de dominios de imagenes publicos donde el corssdomain ya este configurado... lo intente con photobucket .. pero no funciono... Por:JuAn-Q