Esistono diverse tecniche per innalzare il livello di sicurezza di un sito web alcune piuttosto complesse altre, viceversa, abbastanza semplici a livello implementativo. In questo articolo vi presenterรฒ alcuni semplici tip che vi consentiranno, con poca fatica, di implementare una maggior sicurezza delle vostre pagine web attraverso l’aggiunta di poche istruzioni all’interno del file .htaccess.
In pratica vedremo come aggiungere, attraverso .htaccess, i cosiddetti Security Headers a protezione di alcuni aspetti fondamentali del vostro sito web.
Indice
Cos’รจ il file .htaccess
Il file .htaccess รจ un comune file di testo che viene utilizzato dai gestori dei siti web per impostare alcune configurazioni del web-server Apache.
Attraverso il file .htaccess รจ possibile, ad esempio, impostare la pagina di default, creare dei redirect o settare degli headers.
Usare .htaccess per implementare la sicurezza del sito
In questo articolo vedremo tre headers specifici per la sicurezza del tuo sito. I coici proposti serviranno per aggiungere intestazioni di sicurezza extra a tutte le risorse del sito web. In particolare vedremo come aggiungere intestazioni X-Security per la protezione da eventali attacchi di cross-site scripting (XSS), incorporazione all’interno di frame e content-sniffing.
Protezione dagli attacchi XSS
Per prima cosa, vediamo come aggiungere un’intestazione X-Security per proteggere da eventuali attacchi di Cross-Site Scripting. Si tratta di una tecnica informatica che affligge i siti web dinamici che non effettuano sufficienti controlli sugli input degli utenti, i quali possono sfruttare tale vulnerabilitร inserendo script lato client nelle pagine del sito web.
Per fare ciรฒ รจ sufficiente aggiungere la seguente direttiva al file .htaccess nella root del sito:
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode = block"
</IfModule>
Per attivare la protezione da XSS non sono necessarie modifiche o personalizzazioni del codice, รจ sufficiente un banale copia e incolla. Questo codice funziona aggiungendo l’intestazione X-XSS-Protection alle risposte del server. La maggior parte dei browser moderni riconosce questa intestazione e la utilizzerร per proteggere il tuo sito dagli attacchi di tipo XSS.
Protezione da click-jacking (evitare l’incorporazione di un sito all’interno di frame)
Un’altra utilissima intestazione che vi consiglio di aggiungere all’interno del vostro file .htaccess riguarda la prevenzione del click-jacking. Attraverso questa tecnica fraudolenta un malintenzionato potrebbe utilizzare le pagine del vostro sito web per rubare i dati dei vostri utenti!
Grazie ad un’intestazione X-Security, tuttavia, รจ possibile impedire che le pagine del nostro sito vengano incorporante all’interno di altre pagine web che, appunto, potrebbero essere utilizzate per il click-jacking.
Di seguito il codice da aggiungere al file .htaccess:
<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>
Anche in questo caso non sono necessarie modifiche. Questo codice funziona aggiungendo l’intestazione X-Frame-Options alle risposte del server, codice che la maggior parte dei browser moderni comprende e riconosce impedendo, di conseguenza, l’incorporazione delle pagine del sito all’interno di frame (a mano che il frame non si trovi nello stesso dominio).
Protezione contro lo sniffing
Un altro rischio dal quale รจ possibile difendersi รจ lo sniffing del MIME-Type. Anche in questo caso possiamo mitigareil problema con un’intestazione X-Security. Di seguito il codice da aggiungere al file .htaccess:
<IfModule mod_headers.c>
Header set X-Content-Type-Options nosniff
</IfModule>
Ancora una volta non ci sono modifiche da fare. Basta copiare il codice ed il gioco รจ fatto. Questo codice comporta l’aggiunta dell’intestazione X-Content-Type-Options alle risposte del server. La maggior parte dei browser Web moderni comprende questa intestazione e la utilizzerร per garantire i tipi MIME appropriati per tutte le risorse caricate (ad esempio, CSS, JavaScript, font, immagini, video, ecc.).
HTTP Strict-Transport-Security (HSTS)
Attraverso la direttiva HTTP Strict-Transport-Security (abbreviata con HSTS) il sito web informa il browser che i contenuti sono visualizzabili esclusivamente attraverso connessioni sicure. Aggiungendo questa direttiva, quindi, il browser convertitrร automaticamente tutti i tentativi di accesso al sito utilizzando HTTP in richieste HTTPS senza generare inutili redirect. Di seguito il codice da aggiungere al file .htaccess:
<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000"
</IfModule>
La direttiva “max-age” indica per quanto tempo il browser deve ricotrdare questa informazione (nel nostro esempio per 1 anno).
L’header in questione accetta diversi flag che ne rafforzano la portata:
- preload: la direttiva viene salvata nella cd. HSTS preload list per essere applicata giร alla prima visita;
- includeSubDomains: l’header applicato al dominio principale si estende a tutti i suoi sotto-domini.
Nella forma piรน completa, quindi, la direttiva HSTS apparirร cosรฌ:
Header set Strict-Transport-Security "max-age=31536000" includeSubDomains; preload
Attraverso questa direttiva stiamo dicendo al mondo che il nostro sito, compresi tutti i suoi sotto-domini, accetta sempre e solo connessioni in HTTPS.
Combinare tutte le intestazioni X-Security
Ora che abbiamo visto le intestazioni X-Security che vogliamo aggiungere, combiniamole in un singolo frammento di codice:
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode = block"
Header always append X-Frame-Options SAMEORIGIN
Header set X-Content-Type-Options nosniff
Header set Strict-Transport-Security "max-age=31536000"
</IfModule>
Verifica delle nuove intestazioni
Dopo aver implementato queste nuove intestazioni X-Security, รจ possibile verificarne il corretto funzionamento utilizzando un’estensione del browser come, ad esempio, HTTP Header Spy di Google Chrome (disponibile qui) oppure HTTP Header Live per Firefox (disponibile qui) oppure, in alternativa, effettuare un controllo mediante un qualche tool online come, ad esempio, quello disponibile su securityheaders.com.
Se l’implementazione dei nuovi header รจ andata a buon fine dovreste vedere il risultato corrispettivo all’interno delle intestazioni HTTP scambiate tra il client ed il server al momento del download della pagina web.