Ho 3 domini: domainA domainB domainC
Se imposto target="_blank" su domainA con un link a domainC , domainC può accedere a un gruppo di proprietà di domainA . Ecco perché uso target="_blank" rel="noopener noreferrer" .
Altrimenti, sono possibili cose come phishing più semplici. Considera il seguente codice su domainC :
if(window.opener){
window.opener.location="http://phishing.com"
}
Se domainA contiene un link come <a href="https://domainC.com" target="_blank"> , la condizione attiverà e reindirizzerà domainA nel dominio controllato da un utente malintenzionato. Altre proprietà, come window.opener.length sono leggibili.
Anche se in realtà non è una vulnerabilità perché definita dal W3C, è sconosciuta dalla maggior parte degli sviluppatori.
Ora, voglio includere un iframe da domainB in domainA , di cui mi fido, ma che non è protetto contro la vulnerabilità target="_blank" .
Ho testato e fatto clic su un link sul mio iframe e sembra che window.opener non sia null come sarebbe con noopener noreferrer , ma non è possibile accedere all'attributo né ai metodi di esso. Quando lo fa (ad esempio: reindirizzamento), stampa:
Unsafe JavaScript attempt to initiate navigation for frame with URL
domainBfrom frame with URLdomainC. The frame attempting navigation is neither same-origin with the target, nor is it the target's parent or opener.
Quindi, possiamo considerare sicuro includere iframe senza protezione su target="_blank" ?