Correggere i contenuti misti

Joel van Bergen
Joel van Bergen

Supportare HTTPS per il tuo sito web è un passaggio importante per proteggere il tuo sito e i tuoi utenti dagli attacchi, ma i contenuti misti possono rendere questa protezione inutile. I contenuti misti sempre più non sicuri verranno bloccati dai browser, come spiegato nella sezione Che cos'è il contenuto misto?

In questa guida illustreremo tecniche e strumenti per risolvere i problemi relativi ai contenuti misti esistenti e per evitare che si verifichino di nuovi.

Individuare 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.

In Che cosa sono i contenuti misti? puoi trovare diversi esempi e vedere come i problemi vengono segnalati in Chrome DevTools.

L'esempio di contenuti misti passivi restituirà i seguenti avvisi. Se il browser riesce a trovare i contenuti in un URL di https, ne esegue automaticamente l'upgrade, quindi mostra un messaggio.

Chrome DevTools che mostra gli avvisi visualizzati quando vengono rilevati contenuti misti e viene eseguito l'upgrade

I contenuti misti attivi vengono bloccati e mostra un avviso.

Chrome DevTools che mostra gli avvisi visualizzati quando vengono bloccati contenuti misti attivi

Se trovi avvisi come questi per gli URL http:// sul tuo sito, devi correggerli nella sorgente del sito. È utile creare un elenco di questi URL, insieme alla pagina in cui li hai trovati, da utilizzare quando li correggi.

Individuazione di contenuti misti nel sito

Puoi cercare contenuti misti direttamente nel codice sorgente. Cerca http:// nella fonte e cerca i tag che includono attributi URL HTTP. Tieni presente che avere http:// nell'attributo href degli anchor tag (<a>) non costituisce spesso un problema di contenuti misti, con alcune eccezioni degne di nota discusse più avanti.

Se il tuo sito viene pubblicato utilizzando un sistema di gestione dei contenuti, è possibile che durante la pubblicazione delle pagine vengano inseriti link a URL non sicuri. Ad esempio, le immagini potrebbero essere incluse con un URL completo anziché un percorso relativo. Dovrai trovarli e risolverli all'interno dei contenuti del CMS.

Correggere i contenuti misti

Una volta individuati contenuti misti nella fonte del tuo sito, puoi seguire questi passaggi per risolvere il problema.

Se ricevi un messaggio della console che ti informa che è stato eseguito automaticamente l'upgrade di una richiesta di risorsa da HTTP a HTTPS, puoi modificare in sicurezza l'URL http:// per la risorsa nel tuo codice in https://. Puoi anche verificare se una risorsa è disponibile in modo sicuro modificando http:// in https:// nella barra degli URL del browser e cercando di aprire l'URL in una scheda del browser.

Se la risorsa non è disponibile tramite https://, dovresti prendere in considerazione una delle seguenti opzioni:

  • Includi la risorsa di un host diverso, se disponibile.
  • Scarica e ospita direttamente i contenuti sul tuo sito, se consentito dalla legge.
  • Escludi del tutto la risorsa dal tuo sito.

Dopo aver risolto il problema, visualizza la pagina in cui hai rilevato inizialmente l'errore e verifica che l'errore non venga più visualizzato.

Fare attenzione a un utilizzo non standard dei tag

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 portano il browser a una nuova pagina. Ciò significa che di solito non è necessario risolverli. Tuttavia, alcuni script di galleria immagini sostituiscono la funzionalità del tag <a> e caricano la risorsa HTTP specificata dall'attributo href in una visualizzazione lightbox sulla pagina, causando un problema con i contenuti misti.

Gestire 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 distinti, può essere difficile tenere traccia di tutti i contenuti caricati. Per svolgere questa attività, puoi utilizzare i criteri di sicurezza dei contenuti per indicare al browser di inviarti notifiche sui contenuti misti e assicurarti che le pagine non carichino mai inaspettatamente risorse non sicure.

Norme di sicurezza dei contenuti

Il criterio di sicurezza del contenuto (CSP) è una funzionalità del browser multifunzionale che puoi utilizzare per gestire contenuti misti su larga scala. Il meccanismo di segnalazione CSP può essere utilizzato per monitorare i contenuti misti sul tuo sito e fornire criteri di applicazione per proteggere gli utenti mediante 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 tuo server. Inoltre, puoi impostare Content-Security-Policy (anche se non Content-Security-Policy-Report-Only) utilizzando un tag <meta> nella sezione <head> della pagina.

Individuazione di contenuti misti con criteri di sicurezza del contenuto

Puoi utilizzare i criteri di sicurezza del contenuto per raccogliere report relativi a 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 browser invia a https://example.com/reportingEndpoint report in formato JSON relativi a qualsiasi violazione delle norme di sicurezza dei contenuti. 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 dei report per registrare questi report, puoi monitorare il contenuto misto sul tuo sito senza visitare ogni pagina.

A questo proposito, occorre tenere presente quanto segue:

  • Gli utenti devono visitare la pagina in un browser che comprenda l'intestazione CSP. Questo vale per la maggior parte dei browser moderni.
  • Riceverai report solo per le pagine visitate dai tuoi utenti. Pertanto, se alcune delle tue pagine non ricevono molto traffico, potrebbe essere necessario un po' di tempo prima che tu riceva i report relativi all'intero sito.

La guida ai criteri di sicurezza dei contenuti contiene ulteriori informazioni e un endpoint di esempio.

Alternative ai 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. Una valida alternativa potrebbe essere l'utilizzo di un crawler del sito web per rilevare automaticamente eventuali problemi all'interno del tuo sito, ad esempio HTTPSChecker o Analisi di contenuti misti.

Upgrade delle richieste non sicure

Supporto dei browser

  • 44
  • 17
  • 48
  • 10.1

Fonte

I browser stanno iniziando a eseguire l'upgrade e a bloccare le richieste non sicure. Puoi utilizzare le istruzioni 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, salvando così l'utente da contenuti misti.

Puoi attivare questo comportamento inviando un'intestazione Content-Security-Policy con questa istruzione:

Content-Security-Policy: upgrade-insecure-requests

Oppure incorporando 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 nel caso dell'upgrade automatico del browser, se la risorsa non è disponibile tramite HTTPS, la richiesta di upgrade eseguito ha esito negativo e la risorsa non viene caricata. In questo modo viene garantita la sicurezza della pagina. L'istruzione 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 estende a cascata in documenti <iframe>, garantendo che l'intera pagina sia protetta.