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 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"
?