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:
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