2012-02-12 14 views
5

Esto parece ser lo contrario de una pregunta común, lo que implica que tal vez me falta algo obvio.Cuando alguien hace clic en un enlace en un iframe, navegue por toda la ventana

Tengo una pequeña aplicación que muestra alguna otra página (de un dominio diferente) dentro de un iframe, con mi encabezado en la parte superior. Hasta aquí todo bien. Pero cuando alguien hace clic en un enlace en esa página interna, simplemente navega por el iframe; en su lugar, quiero que navegue por la página completa (incluida, y especialmente, la actualización de la URL en la barra de URL).

Esto es básicamente lo contrario de clickjacking. Solo quiero que la navegación funcione como si no fuera un iframe. hay una manera fácil?

Respuesta

4

Si el contenido del está en un dominio diferente, no puede hacerlo debido a razones de seguridad.
Si tiene acceso a otro código html de dominio y que podría hacer algo como esto en el enlace:

href="javascript:parent.window.location.href='http:/google.com' 
+0

este método puede causar que el iframe muestre un mensaje de texto con el enlace href. La mejor respuesta fue target = '_ parent' – orberkov

1

Esto viola la política de origen del mismo dominio si no se controla tanto el sitio dentro y fuera el iframe.

Imagina que pones el banco de un usuario dentro del iframe. Si puede registrar manejadores de eventos para cosas dentro del marco (desde afuera), puede registrar el número de cuenta bancaria del usuario, ver las cosas que hacen clic con fines publicitarios, desviarlos cuando toman ciertas medidas que no le gustan. ¡Y el marco se mostraría como una conexión segura a su banco!

Si es su sitio dentro del marco, es posible, al pasar el estado a través del servidor, o con el nuevo (ish) HTML5 Web Messaging estándar, o manipulando parent.window desde dentro del marco.

+0

Entiendo que no puedo hacer muchas cosas por razones de seguridad, pero parece realmente misterioso permitir solo la "eliminación de fotogramas" si el sitio interno lo solicita explícitamente. – apenwarr

+0

@apenwarr Es fácil hacer que un usuario visite un sitio malicioso. No desea que el sitio malicioso pueda "conducir" una página web de terceros inocente, es una forma de XSS. – Borealid

+0

No estoy tratando de conducir nada, literalmente quiero que * my * page se vaya. Si puedo cargar una página potencialmente maliciosa en un iframe, no es más peligroso que esa página sea la página raíz en lugar de una anidada. – apenwarr

3

El contenido en el iframe puede modificar el destino del enlace: use _parent o _top.

<a href='#aboutus' target='_parent'>About Us</a> 
Cuestiones relacionadas