Seguridad sobre window.opener y iframes

9

Tengo 3 dominios: domainA domainB domainC

Si configuro target="_blank" en domainA con un enlace a domainC , domainC puede acceder a un grupo de propiedades de domainA . Es por eso que uso target="_blank" rel="noopener noreferrer" . De lo contrario, cosas como el phishing más fácil son posibles. Considere el siguiente código en domainC :

if(window.opener){
   window.opener.location="http://phishing.com"
}

Si domainA contiene un enlace como <a href="https://domainC.com" target="_blank"> , la condición se activará y redireccionará domainA al dominio controlado por el atacante. Otras propiedades, como window.opener.length son legibles.

Si bien no es realmente una vulnerabilidad, de hecho, porque está definida por el W3C, es desconocida por la mayoría de los desarrolladores.

Ahora, quiero incluir un iframe de domainB en domainA , en el que confío, pero que no está protegido contra la vulnerabilidad target="_blank" .

Probé e hice clic en un enlace en mi iframe, y parece que window.opener no era null como lo sería con noopener noreferrer , pero no he podido acceder al atributo ni a los métodos de eso. Al hacerlo (p. Ej., Redireccionando), se imprime:

  

Intento de JavaScript no seguro para iniciar la navegación del marco con la URL domainB desde el marco con la URL domainC . El marco que intenta la navegación no es del mismo origen con el objetivo, ni es el elemento principal o el abridor del objetivo.

Entonces, ¿podemos considerar seguro incluir iframe sin protección en target="_blank" ?

    
pregunta Xavier59 03.12.2016 - 13:20
fuente

1 respuesta

2

Está buscando el atributo "sandbox": enlace

  

permitir navegación superior: permite que el contexto de navegación incrustado navegue (cargue) el contenido al contexto de navegación de nivel superior. Si esta palabra clave no se usa, esta operación no está permitida.

    
respondido por el Tom 05.12.2016 - 17:38
fuente

Lea otras preguntas en las etiquetas