Dominio abc.com ha una pagina con 2 iframe. Entrambi sono caricati dal dominio xyz.com. La sicurezza XSS bloccherà l'accesso/comunicazione/interazione JavaScript tra questi due iframe?Sicurezza XSS. Comunicazione tra 2 iframe dello stesso dominio
risposta
Come dice Joel, Same Origin Policy bloccherà l'accesso fino alla finestra principale.
È possibile impostare un canale di comunicazione tra gli script lato client su diversi documenti/telai/finestre dello stesso dominio utilizzando i cookie. Un documento imposta document.cookie
per scrivere un cookie, quindi l'altro, su un intervallo poller, legge document.cookie
, trova qualcosa di nuovo e lo tratta come un messaggio.
È davvero piuttosto fastidioso, in quanto è necessario ottenere ogni documento per identificarsi e segnalare quando e a chi sta inviando messaggi. Solo il metodo dell'ultima risorsa, davvero.
Sì, perché per ottenere un riferimento al documento nell'altro frame, è necessario utilizzare il documento principale.
var otherDocument = window.parent.frames[x].document;
// this will fail ---------^
Accesso ai telai di pari livello potrebbero anche potenzialmente permetterà di determinare quali altri domini documento principale è stato caricato, che potrebbe essere interpretato come una vulnerabilità.
Un file crossdomain.xml nel dominio abc.com che consente a zxy.com di risolvere il problema? –
Non so molto sui file di criteri dei domini, ma suppongo che sia possibile se il browser lo supporta. – Joel
No. 'crossdomain.xml' è per Flash, non influenza lo stesso criterio di origine JS. PS. è 'window.parent'. – bobince
Gli iframe non saranno in grado di ottenere alcun contenuto dalla pagina principale tramite javascript dallo stesso criterio di origine (SOP).
Tuttavia, saranno in grado di effettuare chiamate POST (OTTENERE alcune estensioni) al server utilizzando i cookie (denominato CSRF). Quindi non fare affidamento solo sui cookie di sessione per la tua sicurezza.
Un buon modo per evitare ciò è di avere un token nella pagina principale (invisibile agli iframe) che si passa ad ogni chiamata al proprio server.
Beh, dipende da cosa intendi per comunicare. Sembra che un tipo di comunicazione sia possibile. Ecco un esempio: HTML sul www.abc.com:
<iframe name="test1" src="http://www.xyz.com/frame1.html">
<iframe name="test2" src="http://www.xyz.com/frame2.html">
Poiché gli iframe sono chiamati possiamo farlo in frame2:
<a href="javascript:alert(document.body.innerHTML)" target="test1">click me</a>
Quindi clicchiamo il link nel telaio 2, ma viene visualizzato il contenuto del frame 1.
Se funziona, sei un vero toccasana! –
Piccola demo: http://erlend.oftedal.no/blog/demo/frames/ – Erlend
Demo funziona in FF e IE, ma non in Chrome o Opera –
- 1. Comunicazione iframe tra domini
- 2. Comunicazione tra iFrame?
- 3. SCRIPT5: accesso negato. Fancybox iFrame. Stesso dominio
- 4. Come aprire un collegamento iframe all'interno dello stesso iframe?
- 5. comunicazione tra 2 programmi in python
- 6. Differenza tra dominio di sicurezza e dominio di sicurezza in WildFly
- 7. Come impostare un cookie per iframe sullo stesso dominio
- 8. SCRIPT5: accesso negato in IE9 per iframe sullo stesso dominio
- 9. Spring - iniettare 2 fagioli dello stesso tipo
- 10. Chiudi iframe cross dominio
- 11. comunicazione tra due applicazioni Web nel server stesso
- 12. Problema iframe di dominio incrociato
- 13. In che modo viene applicata la politica dello stesso dominio?
- 14. Comunicazione tra 2 app sullo stesso dispositivo iOS/Android con Xamarin
- 15. Comunicazione tra due applicazioni PHP sullo stesso server?
- 16. Conversione tra tipi numerici dello stesso tipo
- 17. oggetti condivisi tra webapps dello stesso tomcat
- 18. Distinzione tra più eccezioni dello stesso tipo
- 19. Quali sono i rischi della comunicazione JSONP tra domini diversi?
- 20. Comunicazione tra Jasper e un'altra applicazione
- 21. inject script all'interno di iframe di dominio diverso
- 22. Comunicazione in corso tra guerre nello stesso contenitore
- 23. Errore di sicurezza con iframe
- 24. comunicazione tra la scheda del browser
- 25. Native -> comunicazione JS in WKWebView IFrame
- 26. Come avere 2 raccolte dello stesso tipo in JPA?
- 27. Dagger 2 iniettando più istanze dello stesso tipo di oggetto
- 28. Possiamo aggiungere 2 diverse versioni dello stesso pacchetto in NuGet
- 29. Un conduit di elaborazione, 2 origini IO dello stesso tipo
- 30. comunicazione tra servlet remoto
ottima idea +1 c'è un modo per osservare un valore del cookie? –
No, devi solo continuare a guardare su un ciclo di sondaggi (setInterval). – bobince
Ricorda che se i cookie diventano grandi, interromperanno le richieste (ci sono dei limiti sulla dimensione di un insieme di intestazioni delle richieste). – Erlend