Passa ai contenuti principali

Apache 2 - Il problema della visualizzazione dell'iframe su porta 80 e 443 (X-Frame-Options)



Un problema che può capitare su Apache2 è che potrebbe non visualizzare un <iframe> all'interno di un sito web.

Problema non da poco, anche se il costrutto non è dei più raccomandati dalle linee guida.

Il problema che risolveremo è riferito ad iframe, ma si applica a questi costrutti:

<frame>, <iframe>, <embed>, <object>


Cos'è un <iframe>

Secondo la specifica di Wikipedia: 

L'iframe (dall'inglese inline frame) in informatica è un elemento HTML. Si tratta infatti di un frame "ancorato" all'interno della pagina, equivale cioè ad un normale frame, ma con la differenza di essere un elemento (interno) della pagina, non esterno.
Google Maps permette di inserire in una pagina web una mappa fornendo il codice di incorporamento attraverso un iframe
L'iframe viene generalmente utilizzato per mostrare il contenuto di una pagina web, o di una qualsivoglia risorsa, all'interno di un riquadro in una seconda pagina principale

In buona sostanza un iframe è da interpretarsi come un telaietto delle vecchie diapositive, dove la parte in plastica esterno si può interpretare come il nostro sito web, mentre la parte di pellicola è da intendersi come il sito che dobbiamo caricare all'interno

Come detto, un esempio abbastanza classico è quello di Google Maps, dove noi possiamo incorporare una mappa all'interno di un sito, usando il codice di "incorpora".

Il motivo di tale rigidità nel bloccare questo tipo di sintassi sta nell'uso del Click-Jacking, pratica usata per rubare le credenziali.

iframe, però, può anche essere usata per gestire altre problematiche non sempre a scopo di frode.


Come gestirlo dentro il VirutalHost

Come detto, il problema non riguarda solo iframe, ma anche altri costrutti, che vengono chiamati collettivamente X-Frame-Options.

Questo gruppo ha due sintassi:

X-Frame-Options: DENY

X-Frame-Options: SAMEORIGIN

e va inserito, il primo o il secondo (non tutti e due) dentro l'area <Directory> del nostroVirtualHost sia esso classico su porta 80 (per intenderci senza il catenaccio) che porta 443 (quella col catenaccio)

    # Parametri da usare per accedere alla cartella
    <Directory "/domini/sito.tld/www">
       
        allow from all

        # consente di leggere il file .htaccess
        AllowOverride All
        Require all granted

# Consente di aprire dentro un sito con X-Frame-Option
Header always set X-Frame-Options "SAMEORIGIN"

    </Directory>
</VirtualHost>


La soluzione proposta, bypassa il problema rendendoci la vita un po' meno complicata

Ovviamente fatta la modifica al nostro VirtualHost, si deve riavviare Apache2, a secondo del tipo di Sistema Operativo in uso


Commenti

Post più popolari

Mac OS X - Installare ed usare una stampante sul Print Server GetNet 3 Port 2 USB e 1 LPT

Abbiamo visto come installare il Print Server GetNet 3 in 1 sui più diffusi sistemi operativi Windows (vedi articoli correlati in fondo al post). La "scatoletta" ha anche un protocollo di comunicazione Apple Talk, quindi può essere collegata (fare da tramite) anche a stampanti che abbiano la gestione post script integrata (quasi tutte le stampanti salvo quelle del gruppo Ricoh che hanno bisogno di un apposito moduol installato) sul Mac. Print Server GetNet 1 Parallela e 2 USB Il metodo di installazione è molto simile a quello visto su Windows, con la differenza sostanziale che non è necessario scegliere tra moltissimi modelli, ma si gestisce in modo più semplice. Purtroppo sul Mac non è possibile (allo stato attuale) collegare print server di tipo TP-Link, ovvero replicatori di porta USB su Lan, in quanto non esiste un driver adatto. Detto questo, consideriamo la stampante che vogliamo collegare al Mac. Il caso che abbiamo usato nei precedenti post,

BlackBerry - Importare i dati da altri cellulari

English translated post Un amico mi porta un BlackBerry Pearl 8110 e mi chiede di trasferire i dati dal suo cellulare Nokia a questo telefono. Premesso che personalmente non ho mai reputato il BlackBerry un telefono "semplice", l'operazione si è reputata piuttosto complessa. Scartata l'idea di mandare i vcard via bluetooth (come si fa con quasi tutti i Nokia e Samsung), l'unica alternativa è quella di appoggiarsi a Microsoft Outlook !!! Come fare? 1 - Installare il Microsoft Outlook (XP o 2003) nel proprio PC 2 - Installare (nel caso specifico del Nokia) il programma Nokia PC Suite 3 - Sincronizzare solo la Rubrica (ovviamente dipende sempre se il cellulare Nokia è il Vostro o di un Vostro amico) del Nokia con l'Outlook, così che tutti i dati presenti nella Rubrica siano copiati nella sezione Contatti dell'Outlook 4 - Scaricare l'ultima versione del BlackBerry Desktop Manager (se il pacchetto è quello Vodafone, la versione sul CD non è molto efficac

Joomla! - Mettere la testata in Stampa

Come è noto Joomla! è uno dei più usati CMS (Content Managment System) che consente di avere un ambiente (environment) sul quale costruire e sviluppare siti e portali. Uno dei problemi più noti è quello di poter inserire la testata nel file da stampare. Ad esempio se il mio sito si chiama dicecca.net - Blog ed ha un logo particolare che voglio pubblicare come testata, nella conformazione classica, non posso farlo. Come risolvere? Premesso che tutto il sistema è scritto in linguaggio PHP, il file che viene chiamato in causa è component.php che si trova nella cartella /[sito (1)] /templates/system Il file ( che è possibile scaricare qui in formato testo ), alla riga 40 inizia il Body del testo. Alla riga 41 inizia l'inclusione del testo dell'articolo che si è deciso di stampare, che a sua volta viene aperto in una finestra popup. Dando un taso invio, dalla riga 41 è possibile inserire il riferimento ad una immagine e/o un formattato HTML della testata del nos