Missing Web Security Header Tag HTTP Strict-Transport-Security (HSTS) segnalato nel report di Web Vulnerability Assessment
In seguito a un Web Vulnerability Assessment è stato segnalata una vulnerabilità “Missing Web Security Header Tag HTTP Strict-Transport-Security (HSTS)”?
Questo significa che risulta mancante l’intestazione di sicurezza HTTP Strict-Transport-Security (HSTS) nelle risposte del server web.
Questa intestazione viene utilizzata per forzare i browser a utilizzare connessioni HTTPS sicure per tutte le comunicazioni con il server.
Implementando l’intestazione si prevengono attacchi di tipo man-in-the-middle (MITM) e di downgrade del protocollo.
Che Cosa Significa
Quando l’intestazione Strict-Transport-Security manca, il server non può garantire che le comunicazioni vengano effettuate solo tramite HTTPS. Ciò significa che un attaccante potrebbe intercettare o manipolare il traffico tra il browser dell’utente e il server, esponendo potenzialmente dati sensibili.
Rischi connessi alla mancanza dell’Header Tag HTTP Strict-Transport-Security
- Attacchi Man-in-the-Middle (MITM)
Gli attaccanti possono intercettare e alterare le comunicazioni tra il browser e il server. - Downgrade degli attacchi di protocollo
Gli attaccanti possono forzare il browser a utilizzare connessioni HTTP non sicure. - Esposizione di dati sensibili
Senza HTTPS, le informazioni trasmesse possono essere lette o modificate da terze parti.
Come intervenire sulla Vulnerabilità
Per mitigare questa vulnerabilità, è necessario aggiungere l’intestazione Strict-Transport-Security nelle risposte HTTP del server, specificando una politica che imponga l’uso di HTTPS.
Come implementare l’intestazione HTTP Strict-Transport-Security e perché
Come abbiamo visto, l’HTTP Strict-Transport-Security (HSTS) è un meccanismo di sicurezza web che fornisce una protezione contro attacchi di tipo man-in-the-middle, il protocol downgrade e il cookie hijacking. Questo header HTTP forza i browser a utilizzare esclusivamente il protocollo HTTPS per tutte le comunicazioni con il server, impedendo connessioni non sicure tramite HTTP.
Come Implementare HSTS
L’implementazione di HSTS è relativamente semplice e avviene attraverso la configurazione del server web per includere l’header Strict-Transport-Security
nelle risposte HTTP.
1. Configurazione in Apache
Su un server web Apache, si può implementare l’HSTS aggiungendo la seguente direttiva nel file .htaccess o httpd.conf:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
max-age=31536000
: specifica per quanto tempo (in secondi) il browser deve ricordare che solo le connessioni HTTPS sono permesse (qui è impostato a un anno).includeSubDomains
: forza l’applicazione della regola HSTS anche a tutti i sottodomini.preload
: consente di aggiungere il dominio alla lista di preload di HSTS gestita da Google, in modo che venga forzato HTTPS anche alla prima visita.
2. Configurazione in Nginx
Su un server Nginx, si può implementare l’HSTS aggiungendo la seguente direttiva nel file nginx.conf:
server {
listen 443 ssl;
server_name example.com;
add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload” always;
# Altre configurazioni SSL…
}
3. Configurazione in IIS
Se si utilizza utilizzando Microsoft IIS, si può configurare HSTS tramite il Web.config:
Esempio di Risposta HTTP con HSTS
Una volta configurato correttamente, le risposte del server dovrebbero includere un header simile al seguente:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Considerazioni Finali
Implementare l’header HSTS è un passo cruciale per garantire che le comunicazioni tra il server e il client siano sempre sicure. È importante testare la configurazione su un ambiente di staging prima di attivarla in produzione, per assicurarsi che non ci siano problemi di compatibilità o errori di configurazione che potrebbero bloccare l’accesso al sito. Inoltre, l’opzione preload
dovrebbe essere usata con cautela, poiché una volta aggiunti alla lista di preload HSTS, è difficile rimuovere il dominio, a meno di passaggi specifici e lunghi.