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
domainBdesde el marco con la URLdomainC. 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" ?