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.

Pubblicitร 

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.

Altri contenuti interessanti

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

Dominio scaduto da rinnovare subito? No, รจ una truffa!

Negli ultimi anni si รจ assistito a un aumento...

Aggiornamento sito web: perchรฉ รจ importante e deve essere fatto con regolaritร 

Lโ€™aggiornamento di un sito web รจ unโ€™attivitร  fondamentale che...

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...
Pubblicitร