back to top

HTTP Security Headers: aumentare la sicurezza del sito con .htaccess

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.

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.

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

Leggi anche...

Autenticazione a due fattori (2FA): cos’è e come funziona

L'autenticazione a due fattori (in inglese Two Factor Authentication...

Authcode: cos’è e come funziona

Con il termine Authcode (o Auth-code) si fa riferimento...

Criptare (e decriptare) file su Linux con OpenSSL

OpenSSL è un'implementazione rilasciata sotto licenza Open Source dei...

Cos’è una Botnet?

Con il termine botnet si fa riferimento ad una...

DDoS: cos’è, come funziona e come difendersi

Un DDoS (acronimo di Distribuited Denial of Service) รจ...

OTP (One-Time Password): cos’è e come funziona

OTP รจ acronimo di One-Time Password, cioรจ password utilizzabile...
Pubblicitร