it-swarm.dev

Sicurezza aggiuntiva HSTS su HTTPS

HSTS è buono da usare anche se i miei server sono configurati per usare HTTPS (quando si usa HTTP, le regole di riscrittura in Apache lo trasformano in HTTPS)?

Inoltre, HSTS dovrebbe essere utilizzato anche su risorse come CSS e immagini, o solo quando il tipo di contenuto è text/html?

28
Novice User

Sì, se si utilizza SSL a livello di sito, consiglio vivamente di abilitare HSTS .

HSTS è un'importante misura di sicurezza per sconfiggere gli attacchi man-in-the-middle che spostano l'utente su http e quindi attaccano l'utente. Ad esempio, sslstrip è uno strumento ben noto per montare un simile attacco. Per maggiori dettagli su questo tipo di attacco, vedi le seguenti domande: Come contrastare l'attacco sslstrip? , Opzioni per difendersi da SSLstrip? , e questa risposta .

HSTS dice al browser: non usare mai HTTP con questo sito. Accedi solo tramite HTTPS. Pertanto, per abilitare HSTS, è necessario assicurarsi che il sito funzioni con HTTPS e solo HTTPS. Questo include tutto: HTML, CSS, Javascript, tutto. Assicurati che tutti i CSS e Javascript sul tuo sito siano disponibili su HTTPS. Inoltre, ti suggerisco di convertire le tue pagine per fare riferimento a tutto su HTTPS (consiglio di evitare di caricare altre risorse Javascript o CSS su HTTP, poiché ciò potrebbe causare avvisi o problemi di sicurezza per alcuni browser).

Ad esempio, supponiamo che il tuo sito sia www.example.com e hai una pagina https://www.example.com/buy.html che include alcuni Javascript dal tuo sito. Devi assicurarti che il tuo file Javascript sia disponibile su un URL HTTPS (ad es. https://www.example.com/library.js). Ti consiglio di caricarlo tramite un URL HTTPS (ad es. <SCRIPT SRC="https://www.example.com/library.js">).

Post scriptum Consiglio anche di impostare il flag secure su tutti i cookie che usi.

15
D.W.

, la rigorosa sicurezza del trasporto offre un reale vantaggio.

HSTS dice al browser di comunicare solo con il server tramite HTTPS. La prima volta che il browser vede l'intestazione HSTS dal server, la ricorda. Quando l'utente visita nuovamente il sito, il browser impone che tutte le comunicazioni vengano effettuate tramite HTTPS. Funzionerà fintanto che l'attaccante non toglierà l'intestazione alla prima visita al sito.

Questo impedisce attacchi di stripping SSL, una forma di attacco man-in-the-middle che presenta all'utente una risorsa in chiaro anziché quella SSL. Normalmente, l'utente non verrebbe avvisato e la maggior parte degli utenti "medi" non noterebbe che il lucchetto SSL o l'evidenziazione verde/blu non sono mostrati nella barra degli URL. Nel caso di HSTS, il browser avviserebbe immediatamente l'utente che il browser sta tentando di violare la propria politica di sicurezza.

  1. Il client crea una connessione in chiaro al server.
  2. Il server risponde con un reindirizzamento all'indirizzo HTTPS, con l'intestazione HSTS impostata.
  3. Il client e il server comunicano tramite SSL.
  4. La sessione termina.
  5. Il client ritorna più tardi, il browser ha memorizzato il flag HSTS per questo dominio.
  6. L'attaccante tenta di eseguire un attacco su striscia SSL e fornisce un testo in chiaro al client.
  7. Il client riconosce che la politica HSTS non lo consente e avvisa l'utente.

Per ulteriore sicurezza, alcuni propongono di implementare HSTS come opzione in DNSSEC, in modo che l'intestazione HSTS sia impostata come parte della ricerca DNS. Dal momento che DNSSEC fornisce una forte sicurezza attraverso certificati di autorità pre-distribuiti, ciò renderebbe estremamente difficile per un utente malintenzionato sconfiggere il meccanismo HSTS, anche se stanno attivamente tentando di eseguire lo striping SSL durante la prima visita al sito.

22
Polynomial