Interruzione del compromesso della pagina Web impedendo il busting del frame

5

Il mio sito web offre contenuti ricchi agli utenti. Spesso sottoscrivo fornitori di terze parti i cui contenuti sono incorporati nelle mie pagine. Come posso incorporare in modo sicuro i contenuti del dominio esterno sulla mia pagina web in un iframe senza preoccuparmi che non siano in grado di uscire dal frame. Non lo faranno di proposito (senza rischiare il loro client / reputazione). Tuttavia, dal momento che sono quasi sempre piccoli negozi, diventano un bersaglio succoso per un utente malintenzionato che vuole deturpare / reindirizzare il mio sito web.

Esiste un'intestazione (qualcosa di simile / opposto a X-Frame-Options) che posso usare sulla mia pagina principale per garantire che gli iframe che incorporo non possano essere eliminati? Ricorda, non posso chiedere ai venditori di aggiungere intestazioni / script alle loro pagine. Non vogliono mai intenzionalmente fare cose nefande alla mia pagina. Lo scenario che sto cercando di coprire è quello in cui vengono violati.

    
posta Naya Bonbo 23.10.2015 - 21:26
fonte

2 risposte

6

Hai bisogno dell'attributo sandbox . Questo è un nuovo attributo supportato da tutti i principali browser . L'attributo Sandbox impone ulteriori restrizioni sul contenuto all'interno dell'iframe: una di queste restrizioni è l'esecuzione di javascript. Puoi scegliere di rimuovere le altre restrizioni che non desideri imporre.

Utilizza quanto segue per incorporare gli URL di domini diversi / non attendibili nelle tue pagine web:

<iframe src="http://example.com/external-content.htm" sandbox></iframe>

Ecco il riferimento rapido (copiato dal link w3schools sopra):

When the sandbox attribute is present, and it will:

  • treat the content as being from a unique origin
  • block form submission
  • block script execution
  • disable APIs
  • prevent links from targeting other browsing contexts
  • prevent content from using plugins (through , , , or other)
  • prevent the content to navigate its top-level browsing context (this is what you need)
  • block automatically triggered features (such as automatically playing a video or automatically focusing a form control)
    
risposta data 24.10.2015 - 21:43
fonte
2

Dopo una rapida ricerca, ho trovato le seguenti due importanti domande StackOverflow (SO) su questo:

  1. Prevenire iframe figlio da "rottura del frame" ; e
  2. Frame Buster Buster ... necessario il codice buster

Queste domande sono un po 'datate, ma suggeriscono di applicare il seguente codice per impedire reindirizzamenti (in alto) genitore:

<script type="text/javascript">
    var prevent_bust = 0;
    window.onbeforeunload = function() { prevent_bust++; }
    setInterval(function() {
      if (prevent_bust > 0) {
        prevent_bust -= 2;
        window.top.location = 'http://example.org/page-which-responds-with-204';
        /* Replace URL with a page that actually responds with HTTP status code 204 */
      }
    }, 1);
</script>

In pratica questo snippet di JavaScript fermerà la pagina iframed di apportare modifiche a top.location ; quindi, questo codice impedisce all'IRRAME di reindirizzare.

La seconda domanda SO era la fonte originale per questo codice, ma quella domanda stava chiedendo un modo per bloccare questo codice di busting di iframe-buster. (In altre parole, SO source # 2 stava cercando un modo per aggirare questo codice che impedisce i redirect iframe.) Tuttavia, non sembra che sia stata presentata una soluzione valida per aggirare questo codice anti-redirect. Quindi, questa sembra essere una soluzione abbastanza sicura.

Ovviamente, ogni volta che includi un iframe o un altro codice da un altro sito Web / server, erediti alcuni rischi eseguendo tali. Tuttavia, questa dovrebbe essere una soluzione valida per mitigare tale rischio.

    
risposta data 23.10.2015 - 21:57
fonte

Leggi altre domande sui tag