La domanda:
Come faccio, in quanto vittima, a proteggere il mio sito dall'essere manipolato a fare qualcosa che non dovrebbe, su un host condiviso? La politica della stessa origine guarda dall'altra parte. La cosa più comoda sarebbe probabilmente se potessi in qualche modo dire qualcosa come "il mio url = origine sempre unica" .
Sfondo:
Sono appena entrato nel mondo di Javascript ed ecco la mia comprensione della politica Same-Origin : SOP entra in gioco ogni volta che due siti su origini diverse interagiscono, sia tramite XMLHttpRequest
, <script>
caricando, accesso DOM tramite window.open()
's Window
riferimento o attraverso iframe
..
Ora va tutto bene e bene in caso di "un sito per dominio" o "sul sito per sottodominio" , ma per quanto riguarda l'hosting condiviso o i domini condivisi ?
Scenario:
Lascia che il sito del bravo ragazzo risieda
http://shared-hosting.tld/~target/administration/
e l'autore dell'attacco in
http://shared-hosting.tld/~attacker/
I cookie a parte, la vittima ha una sessione autenticata in qualche modo in corso a /administration/
(cookie, archiviazione locale, qualsiasi cosa). Dopodiché, l'utente malintenzionato inganna la vittima visitando il sito su /~attacker/
e utilizzando window.open()
o iframe
sul sito dell'aggressore, sposta il browser della vittima su /administration/
. Poiché l'autore dell'attacco ha un riferimento all'oggetto Window
e entrambi i siti hanno la stessa origine, l'utente malintenzionato ha accesso completo al contenuto di quel sito tramite la manipolazione DOM (autenticato e tutto), poiché SOP non interferisce.
E ti preghiamo di non intrappolare in che modo il sito /administration/
della vittima autentica (e mantiene) lo stato autenticato dagli utenti. A meno che non ci sia un modo per risolvere questo problema in questo modo.
anche:
Capisco che sto solo indicando l'oggetto Window
e l'accesso al DOM attraverso di esso, perché non vedo (so) altri modi in cui un sito potrebbe interagire maliziosamente con altri siti su un host condiviso in questo caso , ma sentiti libero di evidenziare altre cattive intenzioni rilevanti per questo.
Alcuni pensieri: il controllo di Javascript per il caricamento lego della pagina? Non sembra che sarebbe di aiuto. Il sito "reale" della vittima di Iframing all'interno di un sito di "benvenuto" con attributo sandbox? Disabilita anche l'accesso genitore- e gt; .. Tutto sembra tornare sempre al "genitore" potendo accedere al "bambino" senza alcuna restrizione.