Why don't I just serve https only?
I motivi principali sono il comportamento predefinito dei browser e retrocompatibilità .
Comportamento predefinito
Quando un utente finale (cioè senza conoscenza dei protocolli o della sicurezza) digita l'indirizzo del sito Web nel proprio browser, il browser utilizza per impostazione predefinita HTTP. Vedi questa domanda per ulteriori informazioni sul perché i browser scelgono questo comportamento.
Pertanto, è probabile che gli utenti non possano accedere al tuo sito web.
Compatibilità con le versioni precedenti
È possibile che alcuni utenti con vecchi sistemi e vecchi browser non supportino HTTPS o più probabilmente, non abbiano un database aggiornato di certificati radice , o non supportano alcuni protocolli.
In tal caso, non saranno in grado di accedere al sito Web o avranno un avviso di sicurezza. Devi definire se la sicurezza dei tuoi utenti finali è abbastanza importante da forzare HTTPS.
Molti siti web ascoltano ancora HTTP ma reindirizzano automaticamente a HTTPS e ignorano gli utenti con i vecchi vecchi browser.
could someone spoof http://www.example.com if I don't set up HSTS?
Se un utente malintenzionato vuole spoofare http://www.example.com
, deve assumere il controllo del dominio o assumere il controllo dell'indirizzo IP in qualche modo.
Suppongo che intendessi: un attaccante potrebbe eseguire un attacco man-in-the-middle?
In tal caso sì, ma anche con o senza HSTS:
-
Senza HSTS : un utente malintenzionato può facilmente trovarsi nel mezzo del server e dell'utente e deve essere attivo (ad esempio, modificare il contenuto) o passivo (ad esempio, origliare)
-
con HSTS : la prima volta che un utente tenta di visitare il sito utilizzando HTTP, un utente malintenzionato potrebbe costringere l'utente a utilizzare HTTP. Tuttavia, l'attaccante ha una finestra temporale limitata in cui può eseguire il suo attacco.
Che cosa dovresti fare?
Come molti siti Web, è necessario consentire le connessioni HTTP e fare in modo che il server reindirizzi l'utente alla versione HTTPS. In questo modo sostituisci il comportamento predefinito dei browser e assicurati che gli utenti utilizzino la versione HTTPS.
I vecchi sistemi senza i protocolli oi certificati di root appropriati non saranno in grado di accedere al sito (o almeno avranno un avvertimento), ma a seconda della base di utenti questo non dovrebbe essere un problema.
Conclusione
Farà più male che bene a disabilitare HTTP. In realtà non fornisce più sicurezza.
Qualsiasi sicurezza aggiunta per proteggere una risorsa è inutile se impedisce alla maggior parte dei suoi utenti di accedervi. Se i tuoi utenti finali non possono accedere al tuo sito Web perché il loro browser è impostato su HTTP e tu non ascolti le connessioni HTTP, qual è il vantaggio?
Esegui semplicemente il reindirizzamento HTTP 301 alla versione HTTPS.
Domande correlate