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
Ottenere un token di accesso per una GitHub App
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Evitare il flickering dei componenti nel prerender di Blazor 8
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Implementare l'infinite scroll con QuickGrid in Blazor Server
Miglioramenti nelle performance di Angular 16
Gestire i dati con Azure Cosmos DB Data Explorer
Introduzione alle Container Queries
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
I più letti di oggi
- Pubblicare immagini Docker su un registro privato di Azure
- Spegnere automaticamente ogni giorno una VM Azure
- Moonlight 2.0 in beta, con un po' di Silverlight 3.0 per Linux
- Impostare un promemoria per ruotare le chiavi di Azure Storage
- Routing HTTP con i proxy delle Azure Function
- Effettuare il download di un file via FTP con la libreria FluentFTP di .NET