Informazioni sulla stessa politica di origine

2

Sto cercando di capire meglio la stessa politica di origine. Da quello che capisco, la stessa politica di origine limita il codice da una "origine" non ad accedere ai dati da un'altra "origine". Quello che sto cercando di capire è il contesto di questo codice. Posso vedere che il codice su due schede (example1.com e example2.com) non può accedere ai dati nel DOM dell'altro. Che dire di una pagina che carica il codice da entrambi questi siti? La restrizione / sicurezza è ancora valida in quel caso? Questo è un caso d'uso molto valido poiché ogni sito al giorno d'oggi ha caricato il codice da Twitter, Facebook, Google + per lo meno in aggiunta al codice di example1.com. Quindi il codice di Twitter può accedere ai cookie impostati da example1.com? Oppure la stessa politica di origine è valida anche in questo caso?

Naturalmente in questo caso presumo che il codice sia caricato da Twitter, Facebook direttamente e non trasmesso dal server example1.com. Sto anche indovinando il pericolo di XSS esiste se il example1.com sta trasmettendo il codice per Twitter, Facebook ecc. Ho ragione?

Se ho ragione, in che modo il browser separa i dati dom per il codice caricato da ciascun sito quando sono tutti caricati nella stessa pagina? Come tiene traccia di quali dati è possibile accedere a quale codice?

    
posta user220201 24.06.2014 - 10:10
fonte

1 risposta

6

Seguendo il tuo esempio di Twitter e Facebook, entrambi i loro gruppi di script non stanno leggendo il DOM o interagendo con altri script. Se entrambi provassero, diciamo, a ottenere il valore di una variabile o qualcosa del genere, violerebbero SOP.

L'origine di uno script è dove è incluso. Quindi, se hai incluso gli script di analisi di Google sulla tua pagina, puoi interagire con il DOM: è esattamente il motivo per cui puoi caricare jQuery dal CDN di Google e farlo funzionare.

Ecco uno scenario. Facciamo finta di possedere un server uno, e vuoi includere un simpatico "Come la mia pagina!" pulsante dal server due. Affinché il pulsante del server due funzioni, è necessario caricare il codice dai propri server. Quindi, se includi <script src="servertwo.js"></script> , includi un file effettivo che può cambiare il tuo DOM perché la sua "origine" è la tua pagina. È "origine" la tua pagina, anche se il file è ospitato su un altro server perché la tua pagina è quella che dice "Voglio usare questo file ma si trova altrove".

Se il file JS del server due ha provato a caricare uno script aggiuntivo nella tua pagina, inserendo qualcosa del genere: <script src=anyserverexceptforyourown.js"></script> quindi violerebbe SOP se quello script ha provato a cambiare il DOM. Anche se hai caricato lo script originale, il secondo script che il JS di due server tenta di caricare non ha avuto origine dalla tua pagina come nella prima parte dell'esempio, quindi la sua origine verrebbe dal server due not il tuo server.

Sul mio sito personale ho più script. Alcuni degli script hanno questo aspetto:

<script src="http://www.ericlagergren.com/javascript.js"></script>

altrisembranocosì:

<scriptsrc="https://www.google-analytics.com/analytics.js"></script>

entrambi questi "sono originati" dal mio sito web perché I li abbiamo referenziati e ho chiesto di includerli nella mia pagina.

Se uno dei due di quei due script ha provato a caricare uno script aggiuntivo nella mia pagina che il terzo script violerebbe SOP perché non ho chiesto esplicitamente di caricarlo in la mia pagina. Ha senso?

    
risposta data 24.06.2014 - 10:24
fonte

Leggi altre domande sui tag