Supportare HTTPS per il tuo sito web è un passaggio importante per proteggere il sito e gli utenti dagli attacchi, ma i contenuti misti possono rendere inutile questa protezione. I contenuti misti non sicuri verranno sempre più bloccati dai browser, come spiegato in Che cosa sono i contenuti misti?
In questa guida illustreremo tecniche e strumenti per risolvere i problemi esistenti relativi ai contenuti misti e impedire che se ne verifichino 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 tramite errori e avvisi nella console JavaScript.
In Che cosa sono i contenuti misti?, puoi trovare una serie di esempi e vedere come vengono segnalati i problemi in Chrome DevTools.
Un esempio di contenuto misto passivo genera i seguenti avvisi.
Se il browser riesce a trovare i contenuti in un URL https, esegue automaticamente l'upgrade e mostra un messaggio.
I contenuti misti attivi vengono bloccati e viene visualizzato un avviso.
Se trovi avvisi di questo tipo per gli URL http:// sul tuo sito, 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.
Trovare contenuti misti sul tuo sito
Puoi cercare i contenuti misti direttamente nel codice sorgente.
Cerca http:// nell'origine e cerca i tag che includono attributi URL HTTP.
Tieni presente che la presenza di http:// nell'attributo href degli anchor tag (<a>) spesso non è un problema di contenuti misti, con alcune eccezioni degne di nota descritte di seguito.
Se il tuo sito viene pubblicato utilizzando un sistema di gestione dei contenuti, è possibile che i link agli URL non sicuri vengano inseriti al momento della pubblicazione delle pagine. Ad esempio, le immagini possono essere incluse con un URL completo anziché con un percorso relativo. Dovrai trovare e correggere questi errori nei contenuti del CMS.
Correggere i contenuti misti
Una volta individuati i contenuti misti nell'origine del sito, puoi seguire questi passaggi per correggerli.
Se ricevi un messaggio della console che indica che è stato eseguito l'upgrade automatico di una richiesta di risorse da HTTP a HTTPS, puoi modificare in sicurezza 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 provando ad aprire l'URL in una scheda del browser.
Se la risorsa non è disponibile tramite https://, ti consigliamo di 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 hai l'autorizzazione legale per farlo.
- Escludi completamente la risorsa dal tuo sito.
Dopo aver risolto il problema, visualizza la pagina in cui hai trovato l'errore originariamente e verifica che non venga più visualizzato.
Fai attenzione all'utilizzo di tag non standard
Fai attenzione all'utilizzo di tag non standard sul tuo sito.
Ad esempio, gli URL dei tag anchor (<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 è necessario correggerli.
Tuttavia, alcuni script di gallerie di immagini eseguono l'override della funzionalità del tag <a> e caricano la risorsa HTTP specificata dall'attributo href in un display lightbox sulla pagina, causando un problema di contenuti misti.
Gestisci i contenuti misti su larga scala
I passaggi manuali descritti sopra funzionano bene per i 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 semplificare questa attività, puoi utilizzare la Content Security Policy per indicare al browser di informarti sui contenuti misti e assicurarti che le tue pagine non carichino mai risorse non sicure in modo imprevisto.
Content Security Policy
La Content Security Policy (CSP) è una funzionalità del browser multiuso che puoi utilizzare per gestire i contenuti misti su larga scala. Il meccanismo di reporting CSP può essere utilizzato per monitorare i contenuti misti sul tuo sito e fornire norme relative all'applicazione delle norme per proteggere gli utenti eseguendo l'upgrade o bloccando i 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 tuo server.
Inoltre, puoi impostare Content-Security-Policy (ma non Content-Security-Policy-Report-Only) utilizzando un tag <meta> nella sezione <head> della pagina.
Ricerca di contenuti misti con Content Security Policy
Puoi utilizzare la Content Security Policy per raccogliere report sui contenuti misti sul tuo sito.
Per attivare questa funzionalità, imposta l'istruzione 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 suo browser invia report in formato JSON relativi a qualsiasi violazione della Content Security Policy 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 della policy e l'URL della risorsa secondaria che ha violato la policy.
Se configuri l'endpoint di reporting in modo che registri questi report, puoi monitorare i contenuti misti sul tuo sito senza visitare ogni pagina.
Le due eccezioni sono:
- Gli utenti devono visitare la tua pagina in un browser che comprende l'intestazione CSP. Questo vale per la maggior parte dei browser moderni.
- Riceverai report solo per le pagine visitate dai tuoi utenti. Pertanto, se hai pagine che non ricevono molto traffico, potrebbe passare un po' di tempo prima che tu riceva i report per l'intero sito.
La guida Content Security Policy contiene ulteriori informazioni e un endpoint di esempio.
Alternative alla segnalazione con CSP
Se il tuo sito è ospitato su una piattaforma come Blogger, potresti non avere accesso per modificare le intestazioni e aggiungere una CSP. In alternativa, potresti utilizzare un crawler di siti web per trovare i 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 istruzioni CSP per forzare l'upgrade o il blocco automatico 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="https://example.com/image.jpg">
Il browser effettua invece una richiesta sicura per https://example.com/image.jpg, evitando così all'utente i contenuti misti.
Puoi attivare questo comportamento inviando un'intestazione Content-Security-Policy con questa istruzione:
Content-Security-Policy: upgrade-insecure-requests
In alternativa, puoi incorporare la stessa istruzione in linea 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 va oltre l'upgrade automatico del browser, tentando di eseguire l'upgrade delle richieste che il browser attualmente non esegue.
L'istruzione upgrade-insecure-requests si applica a cascata ai documenti <iframe>, garantendo la protezione dell'intera pagina.