Sicurezza su window.opener e iframe

9

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 domainB from frame with URL domainC. 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" ?

    
posta Xavier59 03.12.2016 - 13:20
fonte

1 risposta

2

Stai cercando l'attributo "sandbox": link

allow-top-navigation: Allows the embedded browsing context to navigate (load) content to the top-level browsing context. If this keyword is not used, this operation is not allowed.

    
risposta data 05.12.2016 - 17:38
fonte

Leggi altre domande sui tag