Come noto, HTTPS è uno standard che garantisce la sicurezza nella comunicazione tra un sito web e il browser del visitatore, tramite una connessione criptata, che funziona grazie al certificato di sicurezza del sito.
Tuttavia, esiste un piccolo tempo (stiamo parlando di millisecondi), durante il quale il browser dialoga con il server per stabilire la connessione da usare per il trasferimento dati, che non è scontato sia da subito in HTTPS, e quindi criptata.
Mi sto riferimento al momento in cui un browser aprendo una URL che inizia per
http://
viene poi diretto sulla corrispondente url https://
: se vi sta venendo
il sospetto che qualcuno possa sfruttare questo piccolo "spazio" per sferrare un attacco
la risposta purtrippo è sì.
HTTP Strict Transport Security
HTTP Strict Transport Security pare porre rimedio a questa possibile problema.
Supponendo che un sito rispetti i seguenti requisiti:
- dispone di un certificato valido
- effettua redirect da HTTP a HTTPS sullo stesso server (solo se risponde sulla porta 80/tcp)
- tutti gli eventuali sottodomini sono serviti in HTTPS
- il web server implementa HSTS con attributi minimi richiesti
Il gestore del sito può validare e sottoporre il sito tramite:

Effettuato il Sumbit, i maggiori browser (Chrome, Firefox, Opera, Safari, IE 11 and Edge) incorporeranno l'indirizzo in modo da sapere a priori che il sito in questione dovrà essere accessibile solo in HTTPS: senza se e senza ma.
Server Apache e Strict-Transport-Security
La direttiva suggerita per il web server Apache è
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Che indica sostanzialmente che Strict-Transport-Security è attivo e che questa direttiva "vale" per un valore di max-age (1 anno espresso in secondi) dopo la prima richiesta, include tutti i sottodomini ed è pre-caricata dai browser che lo supportano.
Attenzione: implementare HSTS su siti esistenti è una operazione delicata perché di fatto
impedisce ai browser di accedere a delle risorse in http://
, quindi vanno effettuati tutti i test
come consigliato su https://hstspreload.org/;
ad esempio implementano un valore di max-age
dapprima basso (per poter porre rimedio in caso di problemi).