El dominio abc.com tiene una página con 2 iframes. Ambos se cargan desde el dominio xyz.com. ¿La seguridad de XSS bloqueará el acceso/comunicación/interacción de JavaScript entre esos dos iframes?Seguridad XSS. Comunicación entre 2 iframes del mismo dominio
Respuesta
Como dice Joel, el Same Origin Policy bloqueará el acceso hasta la ventana primaria.
puede configurar un canal de comunicaciones entre las secuencias de comandos del lado del cliente en diferentes documentos/marcos/ventanas del mismo dominio mediante el uso de cookies. Un documento establece document.cookie
para escribir una cookie, y luego el otro, en un sondeador de intervalos, lee document.cookie
, encuentra algo nuevo en él y lo trata como un mensaje.
Es bastante molesto, ya que tiene que conseguir que cada documento se identifique y señalar cuándo y a quién le está enviando mensajes. Método de último recurso solamente, realmente.
Sí, porque para obtener una referencia al documento en el otro marco, debe usar el documento principal.
var otherDocument = window.parent.frames[x].document;
// this will fail ---------^
Acceso a los marcos de hermanos también podrían potencialmente permitirá determinar qué otros dominios del documento de nivel superior ha cargado, lo que podría ser interpretado como una vulnerabilidad.
¿Resolvería el problema un archivo crossdomain.xml en el dominio abc.com que permite zxy.com? –
No sé mucho sobre los archivos de políticas de dominios cruzados, pero supongo que es posible si el navegador lo admite. – Joel
No. 'crossdomain.xml' es para Flash, no afecta la Política de JS Same Origin. PD. es 'window.parent'. – bobince
Los iframes no podrán obtener ningún contenido de la página principal mediante javascript por la misma política de origen (SOP).
Sin embargo, podrán realizar llamadas POST (GET en algunos casos) a su servidor utilizando sus cookies (esto se denomina CSRF). Por lo tanto, no confíe solo en las cookies de sesión para su seguridad.
Una buena forma de evitar esto, es tener un token en su página principal (invisible para los iframes) que pase a cada llamada a su servidor.
Bueno, depende de lo que quiere decir con la comunicación. Parece que algún tipo de comunicación es posible. He aquí un ejemplo: HTML en www.abc.com:
<iframe name="test1" src="http://www.xyz.com/frame1.html">
<iframe name="test2" src="http://www.xyz.com/frame2.html">
Debido a que los marcos flotantes se nombran podemos hacer esto en Frame2:
<a href="javascript:alert(document.body.innerHTML)" target="test1">click me</a>
Así hacemos clic en el enlace en el marco 2, pero el contenido del cuadro 1 se muestra.
¡Si esto funciona usted es un salvavidas! –
Pequeña demostración: http://erlend.oftedal.no/blog/demo/frames/ – Erlend
La demostración funciona en FF e IE, pero no en Chrome u Opera –
- 1. Javascript e mismo origen iframes
- 2. comunicación entre la pestaña del navegador
- 3. ¿Comprende la seguridad de iframes de terceros?
- 4. Comunicación iframe entre dominios
- 5. Cruz iframes sub dominio y JavaScript
- 6. Vehículo 2 Preguntas de comunicación del vehículo
- 7. Comunicación entre dos aplicaciones web en el mismo servidor
- 8. Comunicación en proceso entre guerras en el mismo contenedor
- 9. ¿Cómo hacer comunicación entre dominios entre JavaScript y Flash?
- 10. comunicación entre servlets remotos
- 11. Incrustar la funcionalidad de su sitio en otros con Rails 3 (XSS vs iframes)
- 12. Spring - inyectar 2 beans del mismo tipo
- 13. C# comunicación entre hilos
- 14. Comunicación entre aplicaciones Rails
- 15. Comunicación entre varios servidores
- 16. Backbone.js: comunicación entre vistas
- 17. comunicación entre programas python
- 18. Comunicación entre dos hilos
- 19. ¿Cómo se imprimen iframes?
- 20. comunicación entre dos aplicaciones flexibles
- 21. ¿Cuáles son los riesgos de la comunicación JSONP entre dominios?
- 22. Comunicación entre scripts | Tres métodos
- 23. comunicación entre subprocesos en java
- 24. HTML5 - Mensaje posterior del iframe del navegador cruzado - comunicación entre padres
- 25. ¿Cuál es el método más simple de comunicación entre procesos entre 2 procesos C#?
- 26. comunicación entre procesos en python
- 27. Comunicación entre Android y PC
- 28. ¿La codificación HTML evita los ataques de seguridad XSS?
- 29. Comunicación entre componentes en javascript
- 30. ¿Cómo se aplica exactamente la política del mismo dominio?
muy buena idea +1 ¿hay alguna manera de observar el valor de una cookie? –
No, solo tienes que seguir buscando en un bucle de encuesta (setInterval). – bobince
Recuerde que si las cookies son demasiado grandes, romperán las solicitudes (hay límites en el tamaño de un conjunto de encabezados de solicitud). – Erlend