2010-10-30 13 views
9

Tengo que incluir un sitio de etiqueta blanca externo dentro de un iframe en mi página. Hay numerosas páginas en el sitio externo y varían considerablemente en altura.Obtener la altura del iframe con una URL externa

Necesito ajustar la altura de mi iframe para acomodar esto.

Puedo obtener el alto de la primera página cargada en el iframe (usando PHP), pero no hay forma de obtener las siguientes alturas de página porque no hay forma de saber en qué cambia la url/ubicación en el iframe.

Como se trata de una url externa en el iframe, se aplican las limitaciones de seguridad habituales, por lo que TODAS las soluciones deben provenir del marco principal. La solución debe ser viable en FF e IE al menos.

Lo único que se me ocurre es probar si las barras de desplazamiento son visibles en el iframe, pero esto es aparentemente imposible en estas circunstancias.

Si alguien puede probar que estoy equivocado, o tiene alguna otra solución de navegador entre javascript/ajax/php, me encantaría escucharla.

+0

Consulte esta pregunta: http://stackoverflow.com/questions/466672/set-iframe-to-height-of-content-for-remote-content – Zach

+0

Sí, vi esa pregunta. Pero aquí lo expresé enfáticamente: "TODAS las soluciones deben provenir del marco principal". La mayoría de las sugerencias que he visto involucran codificación de algún tipo en la página remota. – Owen

Respuesta

8

No es posible hacer esto debido al modelo de seguridad del navegador. Si fuera posible, eso sería un problema de seguridad y tendría que ser reparado.

Aunque dejar que el sitio de inserción sepa que el alto de una página web de terceros cuando está incrustado en la página parece inofensivo, puede filtrar información al sitio de inserción que el usuario del navegador quiere mantener en privado. Por ejemplo, http://www.facebook.com/ se procesa de manera diferente dependiendo de si está o no conectado, por lo que si mi sitio web puede funcionar a la altura de <iframe src="http://www.facebook.com/"> entonces puedo determinar si es o no usuario de Facebook, algo que probablemente no quiera que yo haga. saber.

La fuga de información sería similar a la infame CSS History Leak en que revelaría información sobre la relación del usuario con el sitio de terceros simplemente "vinculando" a ese sitio (en este caso con un iframe en lugar de un enlace) . Los proveedores del navegador tuvieron que tapar el filtrado de historial de CSS, así que sospecho que si fuera calcular la altura de un sitio de terceros representado en un iframe en cualquier navegador, el proveedor tendría que solucionarlo también.

La información filtrada sería cualquier cosa que se pueda inferir del alto de una página cuando se representa para un usuario que usa sus cookies (que el navegador enviará aunque esté renderizando en un iframe dentro de la página de un dominio diferente). Los riesgos específicos dependen completamente de la naturaleza del sitio incrustado que es "atacado". P.ej. Podría tener una idea de cuánta actividad de stackoverflow alguien visitando mi sitio tiene al obtener la altura de https://stackoverflow.com/reputation que es diferente para diferentes usuarios.

+0

Hmmm ... yo y 500 millones de otros ;-) Todo lo que tienes es información anónima, es decir, ALGUIEN está conectado. – Owen

+3

No exactamente. Sé que USTED, la persona que está viendo mi página web, está conectada. Me da la oportunidad de atacar mejor un ataque de phishing hacia usted. En lugar de Facebook, podría haber calculado en secreto cuál de los 37 sitios bancarios diferentes que usa. Tenga en cuenta que la información filtrada es similar a la fuga de historial de CSS, que causó un gran revuelo y una pelea para arreglarse, ver http://blog.mozilla.com/security/2010/03/31/plugging-the-css-history- fugas/si no estás familiarizado con eso. – Day

+0

Al tener el control del marco principal, ya conoce la primera url (Facebook o banco) que se carga en el iframe. No hay secretos allí para comenzar. Esto no es lo mismo que la fuga de historial de CSS (gracias por el enlace), pero es más comparable a conocer un hipervínculo utilizado para salir de su sitio. El único "extra" que puede obtener es que el usuario tenga un inicio de sesión en el sitio remoto ... lo cual no es una sorpresa para usted, ya que está utilizando la url que le proporcionó al iframe. En otras palabras, esa información sería una buena conjetura de todos modos. – Owen

Cuestiones relacionadas