Mixed content: perchè non bisogna mischiare HTTP con HTTPS

Mixed content: perchè non bisogna mischiare HTTP con HTTPS

Da molto tempo SSL e HTTPS sono diventati standard di vitale importanza per il web, nonostante qualche perplessità ed un lungo dibattito sull’opportunità di adottare lo standard in modo universale. La diffusione di servizi gratuiti come Let’s encrypt, ed un proliferare di informazione sul tema di qualità finalmente accettabile, alla fine, ha fatto in modo che lo standard fosse accettato, per quanto non sempre sia implementato in modo corretto. Uno dei problemi più diffusi a riguardo è proprio il mixed content, che in italiano si traduce come contenuti misti – ovvero pagine web in HTTPS che prevedano link in HTTP a contenuti HTML, CSS, JS o immagini (oppure, viceversa, pagine HTTP con link in HTTPS, anche qui misti tra loro).

Cosa significa mixed content?

Per capire bene di che si tratta è necessario qualche piccola premessa sul significato di HTTPS e le sue implicazioni in fatto di sicurezza: normalmente infatti quando ci andiamo collegare ad un sito Web in HTTP la connessione non sarà protetta, O meglio lo sarà soltanto in parte (ad esempio, grazie alla protezione WPA2 della connettività wireless da cui ci connettiamo), ma ci sarà comunque un punto finale (endpoint) in cui potenzialmente uno spione o un utente malintenzionato potrebbe – a nostra insaputa – intercettare quei dati. Questo significa che mediante una pratica di monitoraggio detto sniffing questi potrebbe essere in grado di vedere le password che vigiliamo quello che cerchiamo su internet, i siti che visitiamo, e così via.

HTTPS pone un rimedio questo problema incapsulando (ovvero prevedendo una protezione crittografata)  i dati in ingresso e in uscita tra client e server: ciò permetterà di proteggere la connessione da eventuali intrusioni e software spia. Le pagine Web sono collegate tra di loro: questo non solo mediante link da una pagina all’altra (collegamenti ipertestuali), ma anche mediante inclusione di fogli di stile CSS, the file JavaScript, di immagini e di form di inserimento dati. Diventa chiaro a questo punto che se inseriamo dei link con HTTP in chiaro all’interno di pagine protette da HTTPS l’intero meccanismo di protezione rischia di sfaldarsi, E questo viene giustamente rilevato come un’anomalia da tutti i browser moderni.

Pubblicità
LEGGI ANCHE:  10 "ranking factor" che non dovresti sottovalutare nel 2018

Come si comportano in browser con i contenuti misti: in genere li bloccano

Interessante analizzare come si comportano i browser nel caso di mixed content: non tutti sanno che linea di massima non caricano i contenuti mixed. In altri termini sei inseriamo ad esempio dei banner con link in HTTP all’interno di pagine protette da SSL, ci sono buone probabilità che quei banner non vengono mai mostrati agli utenti finali, e questo naturalmente si ripercuote in termini di mancati guadagni dalle visualizzazioni e dai clic. Stessa cosa senza diamo delle immagini in HTTP all’interno di un blog protetto in HTTPS: l’immagine su molti browser non si vedranno. Nello specifico, sia Internet Explorer (dalla versione 9) che Firefox a partire dalla versione 23 che Chrome da diverso tempo bloccano inderogabilmente i contenuti misti.  In altri casi possono mostrare un warning all’utente, cioè un avviso che contenuti del sito non sono sicuri, oppure ancora possono mostrare l’icona di un lucchetto grigio o del blocchetto spezzato. Dal punto di vista dell’immagine del nostro sito questo può essere visto come un danno, in termini di scarsa sicurezza o scarsa affidabilità dei nostri servizi (dal punto di vista di qualche utente più pignolo, o semplicemente più informato). Il contenuto passivo misto viene visualizzato, ma gli utenti potrebbero ugualmente decidere di bloccare questo contenuto impostando una preferenza d’uso del browser.

È importante quindi risolvere i problemi di mixed-content prima possibile, per evitare di ridurre il potenziale tecnico e commerciale del nostro sito.

Mixed content attivo

In genere contenuto visto può essere di due tipi: la prima categoria il contenuto misto di tipo attivo, cioè quello che riguarda parti del sito che possono prevedere una qualche interazione con l’utente (script), oppure che riguardino caricamento di API all’esterno o fetch di dati, di oggetti di vario genere, di file CSS di stile. Se ad esempio la vostra pagina HTTP S non visualizza correttamente fogli di stile o non carica uno script, con buona probabilità potrebbe essere un problema di mixed content attivo: non è banale accorgersene, perché dipende anche dalle impostazioni e dalla versione del browser, motivo per cui quando si sviluppa un sito È sempre opportuno utilizzarlo da sviluppatori con le impostazioni più restrittive. In questo modo, quindi, potremmo testarlo nella massima sicurezza.

In questi casi bisogna intervenire a livello di sviluppo del sito e fare in modo che tutti gli URL siano universalmente in HTTPS; se su qualche dominio esterno SSN non fosse supportato, è indispensabile sollecitare l’uso del protocollo, passare a versioni premium delle librerie, cambiare API e così via, a seconda dei casi.

LEGGI ANCHE:  Come creare il tuo sito gratis

Questa è una lista dei principali tag HTML che possono prevedere casi di mixed content attivo:

  • <script> (controllare l’URL sull’attributo src) – ad esempio file .JS
  • <link> (controllare l’URL sull’attributo) – ad esempio fogli di stile .CSS
  • <url> all’interno dei file CSS (esempio: @font-face, cursor, background-image, …).
  • <iframe> (controllare l’URL sull’attributosrc)
  • XMLHttpRequest
  • fetch()
  • <object> (controllare l’URL sull’attributo data)

Mixed content passivo

Contrapposto al mixed content attivo via quello passivo, che solitamente è meno prioritario del precedente, ma dovrebbe comunque essere evitato, se possibile. In questi casi è abbastanza semplice risolvere, perché basta editare manualmente URL HTTP e farli diventare tutti in HTTPS – ovviamente dopo aver attivato i certificati sui domini degli URL in questione.

  • <img> (src)
  • <audio> (src)
  • <video> (src)
  • <object>

Per risolvere il problema: pre-requisito di base

La cosa fondamentale per risolvere problemi di questo tipo è che tutti i domini che siano coinvolti (linkati) supportino HTTPS; se non ci fosse, è indispensabile installarlo manualmente. È indifferente utilizzare certificati gratuiti o a pagamento, anche se, a livello pratico, alcuni tipi di applicazione potrebbero prevedere l’opportunità di utilizzare soltanto i secondi (ad esempio siti di e-commerce).

Come rilevare e risolvere un sito con mixed content

Le operazioni da eseguire per risolvere prevedono, in generale:

  1. La rilevazione di tutti gli URL che provocano mixed content, su tutte le pagine e per tutti i link in uscita (anche quelli esterni al sito);
  2. La correzione manuale o in massa deli URL scorretti
  3. Un successivo check per verificare che sia tutto ok: per verificare la presenza di problemi di mixed content, è possibile sfruttare alcuni appositi tool gratuiti.
  4. La ripetizione dei punti 1-3 finchè il punto 4 non da’ più alcun errore.

Plugin WordPress per risolvere il mixed content

Per i siti WordPress sono disponibili numerosi plugin che aiutano sia a rilevare perché a risolvere il problema. Quello che segue è un fixer, cioè un “correttore automatico” che può essere utilizzato per provare ad arginare il problema se non avessimo uno sviluppatore a portata di mano.

SSL Insecure Content Fixer

(fonte, fonte)

Ti piace questo articolo?

1 voto

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.

Mixed content: perchè non bisogna mischiare HTTP con HTTPS

Votato 10 / 10, da 1 utenti