È possibile impedire l'esecuzione del nostro sito Web all'interno del set di frame o IFrame di un altro dominio?

StackOverflow https://stackoverflow.com/questions/459835

Domanda

Di recente abbiamo riscontrato un problema in cui altri siti gestiscono il nostro sito di e-commerce all'interno di un set di frame in cui il nostro sito (con l'ID affiliato degli autori di reati applicato) è l'unico contenuto in un singolo frame a larghezza intera. Quindi, in sostanza, sembra e si sente come il nostro sito con il loro URL in alto. Possiamo tagliare il loro ID affiliato, il che renderebbe inutile farlo, ma ciò non impedisce ai futuri trasgressori di fare la stessa cosa fino a quando non lo scopriamo.

Esiste un modo generico (tramite JavaScript che appare su ogni pagina forse?) per evitare che ciò accada? Si noti che l'aggiunta di target a tutti i collegamenti non è fattibile, ma l'aggiunta di uno snippet di JS a tutte le pagine lo è, poiché le parti di intestazione e piè di pagina sono condivise in tutto il sito da un'unica fonte.

Un'altra possibilità sarebbe a livello di Apache (se c'è qualcosa che potremmo fare sul lato server) poiché passiamo tutte le richieste tramite mod-rewrite.

Nota che sarebbe essenziale consentire il caricamento di pagine all'interno di un IFrame se la pagina principale proviene dal nostro dominio, poiché utilizziamo validamente IFrame

È stato utile?

Soluzione

Credo che il metodo moderno adeguato per raggiungere questo obiettivo sia con L'intestazione della risposta X-Frame-Options .

Dall'MDN:

  

L'intestazione della risposta HTTP X-Frame-Options può essere utilizzata per indicare se un browser deve o meno consentire il rendering di una pagina in un frame o iframe. I siti possono utilizzarlo per evitare attacchi di clickjacking, garantendo che il loro contenuto non sia incorporato in altri siti.

Dai un'occhiata a: Come impedire a IFRAME di reindirizzare la finestra di livello superiore

Altri suggerimenti

Ho sentito che le soluzioni a questo problema vengono chiamate "frame popper script". Un rapido google presenta questa discussione . Sembra che questo sia uno dei più semplici:

if (window != top) top.location.href = location.href; 

Dai un'occhiata a questo articolo. Offre una soluzione abbastanza semplice per il rilevamento di frame e la loro fuoriuscita.

Come uscire dai frame con JavaScript

Inoltre, farei un ulteriore passo avanti. Ogni volta che rilevi un frame, prendi l'ID affiliato del framer del sito offensivo e invialo al server con AJAX insieme all'URL che stanno utilizzando. Quindi, automaticamente o manualmente, puoi verificare che stanno inquadrando il tuo sito e cancellare il loro codice di affiliazione uno alla volta.

Solo indovinando qui ... ma cosa succede se si utilizza JavaScript per chiamare la finestra principale per accedere al suo oggetto documento? Puoi verificare se non è nullo e se esiste una finestra principale (che significa che un frame ha caricato il tuo sito), puoi nascondere tutto il tuo html tramite javascript ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top