Il supporto di HTTPS per il tuo sito web è un passo importante per proteggere il tuo sito e i tuoi utenti dagli attacchi, ma i contenuti misti possono rendere inutile questa protezione. I contenuti misti sempre più non sicuri verranno bloccati dai browser, come spiegato in Che cosa sono i contenuti misti?
In questa guida mostreremo tecniche e strumenti per risolvere i problemi esistenti di contenuti misti e per prevenirne di nuovi.
Trovare contenuti misti visitando il tuo sito
Quando visiti una pagina HTTPS in Google Chrome, il browser ti avvisa della presenza di contenuti misti sotto forma di errori e avvisi nella console JavaScript.
Nella sezione Che cos'è il contenuto misto?, puoi trovare una serie di esempi e vedere come vengono segnalati i problemi in Chrome DevTools.
L'esempio di contenuti misti passivi genererà i seguenti avvisi.
Se il browser riesce a trovare i contenuti a un URL https, li aggiorna automaticamente e mostra un messaggio.
Il contenuto misto attivo viene bloccato e viene visualizzato un avviso.
Se sul tuo sito trovi avvisi come questi per gli URL http://,
devi correggerli nell'origine del sito.
È utile creare un elenco di questi URL, insieme alla pagina in cui li hai trovati, da utilizzare quando li correggi.
Individuare contenuti misti nel tuo sito
Puoi cercare contenuti misti direttamente nel codice sorgente.
Cerca http:// nella sorgente e individua i tag che includono attributi URL HTTP.
Tieni presente che la presenza di http:// nell'attributo href dei tag di ancoraggio (<a>)
spesso non è un problema di contenuti misti, con alcune eccezioni degne di nota discusse in seguito.
Se il tuo sito viene pubblicato utilizzando un sistema di gestione dei contenuti, è possibile che vengano inseriti link a URL non sicuri durante la pubblicazione delle pagine. Ad esempio, le immagini possono essere incluse con un URL completo anziché un percorso relativo. Dovrai trovarli e risolverli all'interno dei contenuti CMS.
Correzione dei contenuti misti
Una volta trovato il contenuto misto nell'origine del tuo sito, puoi seguire questi passaggi per risolverlo.
Se ricevi un messaggio nella console che indica che una richiesta di risorsa è stata aggiornata automaticamente da HTTP a HTTPS,
puoi modificare in modo sicuro l'URL http:// della risorsa nel codice in https://.
Puoi anche verificare se una risorsa è disponibile in modo sicuro modificando http:// in https:// nella barra degli URL del browser
e tentando di aprire l'URL in una scheda del browser.
Se la risorsa non è disponibile tramite https://, devi prendere in considerazione una delle seguenti opzioni:
- Includi la risorsa da un host diverso, se disponibile.
- Scarica e ospita i contenuti direttamente sul tuo sito, se sei legalmente autorizzato a farlo.
- Escludi completamente la risorsa dal tuo sito.
Dopo aver risolto il problema, visualizza la pagina in cui hai trovato l'errore in origine e verifica che non venga più visualizzato.
Attenzione all'utilizzo di tag non standard
Fai attenzione all'utilizzo di tag non standard sul tuo sito.
Ad esempio, gli URL dei tag di ancoraggio (<a>) non generano errori di contenuti misti,
in quanto fanno sì che il browser passi a una nuova pagina.
Ciò significa che in genere non devono essere riparati.
Tuttavia, alcuni script della galleria di immagini ignorano la funzionalità del tag <a> e caricano la risorsa HTTP specificata dall'attributo href in una visualizzazione lightbox sulla pagina, causando un problema di contenuti misti.
Gestire i contenuti misti su larga scala
I passaggi manuali descritti sopra sono adatti ai siti web più piccoli, ma per i siti web di grandi dimensioni o con molti team di sviluppo separati, può essere difficile tenere traccia di tutti i contenuti caricati. Per facilitare questa attività, puoi utilizzare la Content Security Policy per indicare al browser di inviarti una notifica in caso di contenuti misti e assicurarti che le tue pagine non carichino mai in modo imprevisto risorse non sicure.
Policy di sicurezza dei contenuti
La Content Security Policy (CSP) è una funzionalità del browser multiuso che puoi utilizzare per gestire i contenuti misti su larga scala. Il meccanismo di generazione di report CSP può essere utilizzato per monitorare i contenuti misti sul tuo sito e fornire norme di applicazione per proteggere gli utenti eseguendo l'upgrade o il blocco dei contenuti misti.
Puoi attivare queste funzionalità per una pagina includendo l'intestazione Content-Security-Policy o Content-Security-Policy-Report-Only nella risposta inviata dal server.
Inoltre, puoi impostare Content-Security-Policy
(anche se non Content-Security-Policy-Report-Only) utilizzando un tag <meta> nella sezione <head> della pagina.
Trovare contenuti misti con la policy di sicurezza dei contenuti
Puoi utilizzare la Content Security Policy per raccogliere report sui contenuti misti sul tuo sito.
Per attivare questa funzionalità, imposta la direttiva Content-Security-Policy-Report-Only aggiungendola come intestazione della risposta per il tuo sito.
Intestazione della risposta:
Content-Security-Policy-Report-Only: default-src https: 'unsafe-inline' 'unsafe-eval'; report-uri https://example.com/reportingEndpoint
Ogni volta che un utente visita una pagina del tuo sito, il browser invia report in formato JSON relativi a qualsiasi violazione della norma sulla sicurezza dei contenuti a https://example.com/reportingEndpoint.
In questo caso, ogni volta che una risorsa secondaria viene caricata tramite HTTP, viene inviato un report.
Questi report includono l'URL della pagina in cui si è verificata la violazione delle norme e l'URL della risorsa secondaria che ha violato le norme.
Se configuri l'endpoint di reporting per registrare questi report,
puoi monitorare i contenuti misti sul tuo sito senza visitare personalmente ogni pagina.
Le due avvertenze da tenere a mente sono:
- Gli utenti devono visitare la tua pagina in un browser che riconosce l'intestazione CSP. Questo vale per la maggior parte dei browser moderni.
- Ricevi report solo per le pagine visitate dai tuoi utenti. Pertanto, se hai pagine che non generano molto traffico, potrebbe essere necessario un po' di tempo prima di ricevere i report per l'intero sito.
La guida Norme di sicurezza dei contenuti contiene ulteriori informazioni e un endpoint di esempio.
Alternative alla generazione di report con CSP
Se il tuo sito è ospitato da una piattaforma come Blogger, potresti non avere accesso per modificare le intestazioni e aggiungere un CSP. Un'alternativa valida potrebbe essere l'utilizzo di un crawler di siti web per trovare problemi nel tuo sito, ad esempio HTTPSChecker o Mixed Content Scan.
Upgrade delle richieste non sicure
I browser stanno iniziando a eseguire l'upgrade e a bloccare le richieste non sicure. Puoi utilizzare le direttive CSP per forzare l'upgrade automatico o il blocco di questi asset.
L'istruzione CSP upgrade-insecure-requests
indica al browser di eseguire l'upgrade degli URL non sicuri prima di effettuare richieste di rete.
Ad esempio, se una pagina contiene un tag immagine con un URL HTTP come
<img src="http://example.com/image.jpg">
Il browser effettua invece una richiesta sicura per
https://example.com/image.jpg, evitando così contenuti misti all'utente.
Puoi attivare questo comportamento inviando un'intestazione Content-Security-Policy con questa direttiva:
Content-Security-Policy: upgrade-insecure-requests
Oppure incorporando la stessa direttiva inline nella sezione <head> del documento utilizzando un elemento <meta>:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Come per l'upgrade automatico del browser, se la risorsa non è disponibile tramite HTTPS,
la richiesta di upgrade non va a buon fine e la risorsa non viene caricata.
In questo modo, la sicurezza della pagina viene mantenuta. La direttiva upgrade-insecure-requests andrà oltre l'upgrade automatico del browser,
tentando di eseguire l'upgrade delle richieste che il browser attualmente non esegue.
L'istruzione upgrade-insecure-requests viene applicata in cascata ai documenti <iframe>,
garantendo la protezione dell'intera pagina.