Il framebusting descrive una tecnica che consente di evitare che i contenuti di un sito web siano esposti in un iFrame di un sito terzo.
In questo script vedremo come testare se il nostro sito/pagina è contenuto in un iframe e in caso positivo "estrarlo" dallo stesso indirizzando il browser sullo stesso. Per consentire a siti "partner" di fruire del contenuto del nostro sito o pagina, utilizzeremo le messaging API di HTML5.
Il codice seguente esegue una funzione che testa se il sito è contenuto in un browser, la funzione viene richiamata in maniera temporizzata, in modo da restare in attesa per il tempo necessario a ricevere un messaggio proveniente dal sito partner, che disabiliterà il framebusting.
var timer; if(window !== window.top){ timer = setTimeout( function(){ popOut(); }, 2000); } function popOut(){ window.top.location = location; } window.addEventListener("message", function(e){ if(e.origin = "friendlyUrl"){ clearTimeout(timer); }), true);
Nella funzione registrata con il metodo addEventListener, è presente un controllo sull'Origin del messaggio, che dovrebbe pervenire da un url riconosciuto come sito "partner".
La pagina del sito partner, che contiene l'iFrame, dovrà inviare un messaggio alla pagina contenuta nell'iFrame per evitare che questa proceda con il framebusting
var container = document.getElementById("iframe").contentWindow; container.postMessage("Hello!", "http://mytargetsite.com");
La specifica completa delle messaging API è disponibile qui: http://www.whatwg.org/specs/web-apps/current-work/multipage/web-messaging.html
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Sopprimere gli errori di concorrenza quando si elimina una entity con Entity Framework 7
Ottimizzare il codice JavaScript utilizzando WeakMap e WeakSet
Bloccare una pull request che arriva da branch non definiti in GitHub
Gestire la query string nell'output cache di ASP.NET Core
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Ottenere il riferimento alla finestra che ha aperto un'altra finestra con HTML5 e JavaScript
Gestire il breaking change di Entity Framework Core 7 con tabelle che usano identity e trigger
Autenticazione basata su certificati con ASP.NET Core
Fare automaticamente il merge di una pull request con un workflow di GitHub
Evitare la command injection in un workflow di GitHub
Monitorare i server on-premises con Azure Arc
Utilizzare i nuovi piani dedicati di Azure Container Apps