Il supporto del protocollo HTTPS per il sito web è un passaggio importante per proteggere il sito e gli utenti dagli attacchi. ma contenuti misti possono rendere inutile tale protezione. I contenuti misti sempre più non sicuri verranno bloccati dai browser, come spiegato nella sezione Che cosa sono i contenuti misti?.
In questa guida dimostreremo tecniche e strumenti per risolvere i problemi esistenti relativi ai contenuti misti. ed evitare che si verifichino nuovi.
Ricerca di contenuti misti visitando il 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 una serie di esempi e vedere come vengono segnalati i problemi 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 e viene visualizzato un messaggio.
![Chrome DevTools che mostra gli avvisi visualizzati quando vengono rilevati e aggiornati contenuti misti](https://web.developers.google.cn/static/articles/fixing-mixed-content/image/passive-mixed-content.jpeg?authuser=5&hl=it)
I contenuti misti attivi sono bloccati e mostrano un avviso.
![Chrome DevTools che mostra gli avvisi visualizzati quando i contenuti misti attivi sono bloccati](https://web.developers.google.cn/static/articles/fixing-mixed-content/image/chrome-devtools-showing-7a65755cae4b8.jpg?authuser=5&hl=it)
Se vedi avvisi come questi per http://
URL del tuo sito,
devi correggerli nel codice sorgente del sito.
È utile fare 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 tua origine e cerca i tag che includono attributi URL HTTP.
Tieni presente che avere http://
nell'attributo href
degli anchor tag (<a>
)
spesso non riguarda contenuti misti, con alcune eccezioni degne di nota che verranno discusse più avanti.
Se il tuo sito viene pubblicato usando 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é con un percorso relativo. Dovrai individuarli e correggerli nei contenuti del CMS.
Correzione dei contenuti misti
Una volta trovati contenuti misti nella sorgente del sito, puoi seguire questa procedura per risolvere il problema.
Se ricevi un messaggio della console che indica che è stato eseguito l'upgrade automatico di una richiesta di risorsa da HTTP a HTTPS:
puoi modificare tranquillamente l'URL http://
della risorsa nel tuo codice in https://
.
Puoi anche verificare se una risorsa è disponibile in modo sicuro modificando http://
in https://
nella barra dell'URL del browser
e tentare 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 i contenuti direttamente sul tuo sito, se consentito dalla legge.
- Escludi del tutto la risorsa dal tuo sito.
Una volta risolto il problema, visualizza la pagina in cui hai rilevato l'errore e verifica che non sia più presente.
Presta attenzione all'utilizzo dei tag non standard
Fai attenzione all'utilizzo non standard dei tag sul tuo sito.
Ad esempio, gli URL dei tag anchor (<a>
) non generano errori di contenuti misti.
perché portano il browser
a visitare una nuova pagina.
Ciò significa che in genere non è necessario correggerli.
Tuttavia, alcuni script galleria immagini eseguono l'override della funzionalità dell'attributo <a>
e carica la risorsa HTTP specificata dall'attributo href
in una visualizzazione lightbox sulla pagina,
causa un problema di contenuti misti.
Gestire i contenuti misti su larga scala
I passaggi manuali precedenti funzionano bene per i siti web più piccoli. ma per siti web di grandi dimensioni o siti con molti team di sviluppo separati, Può essere difficile tenere traccia di tutti i contenuti caricati. Per semplificare questa attività, puoi utilizzare i criteri di sicurezza del contenuto per indicare al browser di inviarti notifiche relative a contenuti misti e fare in modo che le tue pagine non carichino mai inaspettatamente risorse non sicure.
Criteri di sicurezza dei contenuti
Criteri di sicurezza del contenuto (CSP) è una funzionalità del browser multiuso che puoi usare per gestire contenuti misti su larga scala. Il meccanismo di segnalazione CSP può essere utilizzato per monitorare contenuti misti sul tuo sito, e definire criteri di applicazione per proteggere gli utenti mediante l'upgrade o il blocco dei contenuti misti.
Puoi attivare queste funzioni per una pagina includendo il parametro
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 il criterio di sicurezza del contenuto
Puoi utilizzare le norme di sicurezza del contenuto per raccogliere report di 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 report in formato JSON relativi a qualsiasi violazione delle norme relative alla sicurezza dei contenuti per
https://example.com/reportingEndpoint
.
In questo caso, ogni volta che una sottorisorsa 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 viola le norme.
Se configuri l'endpoint di reporting per la registrazione di questi report,
puoi monitorare i contenuti misti sul tuo sito senza dover visitare ogni pagina personalmente.
Le due avvertenze a riguardo 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 i report solo per le pagine visitate dagli utenti. Quindi, se hai pagine che non ricevono molto traffico, potrebbe trascorrere del tempo prima di ricevere i report per l'intero sito.
Le norme sulla sicurezza dei contenuti contiene altre informazioni e un endpoint di esempio.
Alternative ai report con CSP
Se il sito è ospitato su 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 di siti web per trovare problemi nel tuo sito, ad esempio HTTPSChecker o Scansione dei contenuti misti.
Upgrade delle richieste non sicure
Stiamo iniziando a eseguire l'upgrade dei browser e a bloccare le richieste non sicure. Puoi utilizzare le istruzioni CSP per forzare l'upgrade o il blocco automatico di questi asset.
La upgrade-insecure-requests
La direttiva CSP 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 invia invece una richiesta sicura
https://example.com/image.jpg
, salvando così l'utente dai contenuti misti.
Puoi attivare questo comportamento inviando un'intestazione Content-Security-Policy
con questa istruzione:
Content-Security-Policy: upgrade-insecure-requests
In alternativa, incorporando la stessa istruzione nel file <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 viene garantita la sicurezza della pagina. L'istruzione upgrade-insecure-requests
andrà oltre l'upgrade automatico del browser,
il tentativo di upgrade richiede che il browser al momento non lo fa.
L'istruzione upgrade-insecure-requests
viene applicata a cascata in <iframe>
documenti,
garantendo che l'intera pagina sia protetta.