2010-11-09 8 views
8

Sto lavorando per rendere un sito completamente funzionante con HTTPS. Come parte di questo, mi piacerebbe assicurarci di non "rompere il lucchetto". Cioè, non dovremmo mai caricare contenuto non SSL su una pagina SSL, che può attivare un avviso o un altro indicatore a seconda del browser. Per verificare questo è il caso, mi piacerebbe fare due cose:Rileva l'icona del lucchetto rotto (contenuto misto sicuro/non protetto) da Javascript

  1. Scrivi test di selenio che verificano varie azioni non rompere il blocco.
  2. Scrive il codice di registrazione in JS che verifica durante una sessione utente se il blocco è interrotto e, se lo è, ritorna al server.

C'è qualche metodo che può essere utilizzato in JS per controllare lo stato di blocco/non rotto dell'icona di blocco HTTPS del browser? O in modo equivalente, lo stato misto/non misto del contenuto della pagina corrente?

risposta

4

Sembra che il CSP di Mozilla (Content Security Policy), implementato in Firefox 4, risolva parzialmente questo problema. Può limitare il contenuto caricato sul tuo sito solo alle porte SSL e inviare un rapporto a un URL specificato quando il browser tenta di caricare qualcosa di non SSL. È solo in Firefox 4 fino ad ora, ma abbiamo abbastanza utenti FF4 che questo può servire come un buon sistema di allerta precoce.

Aggiornamento 8/15: CSP è supportato anche in Chrome. L'ho usato efficacemente in produzione come sistema di allerta precoce per errori di contenuto misto. Sembra circa questo:

X-WebKit-CSP-Solo report: default-src https: 'non sicuro-inline' 'unsafe-eval'; report-uri/report_mixed_content; img-src https: // * data:; frame-src https: // * about: javascript:

Si noti che questa è un'intestazione molto permissiva, con l'intenzione di rilevare solo errori di contenuto misto. Ti consigliamo di utilizzare X-Content-Security-Policy per Firefox.

Se si distribuisce questo ad una percentuale dei propri utenti, si otterranno i registri ogni volta che si distribuisce accidentalmente un errore di contenuto misto. Per rendere questo efficace per i test di selenio, è necessario aggiungere un gestore di modalità di prova speciale per/report_mixed_content che causa il fallimento del test.

Per gli utenti interni, l'ho sempre abilitato in modalità di applicazione forzata (rimuovere -Report-Only). Ciò aiuta ad assicurarsi che altri sviluppatori notino errori di contenuto misto nelle nuove funzionalità prima che vengano distribuite.

2

Si può ripetere l'intero DOM e controllare tutti i collegamenti per assicurarsi che siano https://.

+2

Questa è una buona idea ma non tiene conto delle richieste RPC XHR, JSONP e interframe.È una base di codice ampia e difficile da individuare errori prima che si insinuano, quindi la necessità di test e registrazione costanti. – jsha

0

È possibile utilizzare Mixed Content Scan, uno script CLI PHP che ho scritto che esegue la scansione del sito per i Contenuti misti.

eseguire questo script dalla CLI, un tale:

$ mixed-content-scan https://www.bram.us/ 

Lo script stesso inizierà la scansione e dare un feedback durante il funzionamento. Quando viene trovato contenuto misto, gli URL che causano misti avvertimenti contenuti verranno visualizzati sullo schermo:

$ mixed-content-scan https://www.bram.us/ 
[2015-01-07 12:54:20] MCS.NOTICE: Scanning https://www.bram.us/ [] [] 
[2015-01-07 12:54:21] MCS.INFO: 00000 - https://www.bram.us/ [] [] 
[2015-01-07 12:54:22] MCS.INFO: 00001 - https://www.bram.us/projects/ [] [] 
[2015-01-07 12:54:22] MCS.INFO: 00002 - https://www.bram.us/projects/mint-custom-title/ [] [] 
[2015-01-07 12:54:23] MCS.INFO: 00003 - https://www.bram.us/projects/bramusicq/ [] [] 
[2015-01-07 12:54:24] MCS.INFO: 00004 - https://www.bram.us/projects/gm_bramus/ [] [] 
[2015-01-07 12:54:24] MCS.INFO: 00005 - https://www.bram.us/projects/js_bramus/ [] [] 
[2015-01-07 12:54:26] MCS.INFO: 00006 - https://www.bram.us/projects/js_bramus/jsprogressbarhandler/ [] [] 
[2015-01-07 12:54:27] MCS.INFO: 00007 - https://www.bram.us/projects/js_bramus/lazierload/ [] [] 
[2015-01-07 12:54:27] MCS.INFO: 00008 - https://www.bram.us/projects/the-box-office/ [] [] 
[2015-01-07 12:54:28] MCS.INFO: 00009 - https://www.bram.us/projects/tinymce-plugins/ [] [] 
[2015-01-07 12:54:29] MCS.INFO: 00010 - https://www.bram.us/projects/tinymce-plugins/tinymce-classes-and-ids-plugin-bramus_cssextras/ [] [] 
[2015-01-07 12:54:30] MCS.INFO: 00011 - https://www.bram.us/projects/flashlightboxinjector/ [] [] 

... 

[2015-01-07 12:54:45] MCS.INFO: 00036 - https://www.bram.us/2007/06/04/accessible-expanding-and-collapsing-menu/ [] [] 
[2015-01-07 12:54:45] MCS.ERROR: 00037 - https://www.bram.us/demo/projects/jsprogressbarhandler/ [] [] 
[2015-01-07 12:54:45] MCS.WARNING: http://www.google-analytics.com/urchin.js [] [] 
[2015-01-07 12:54:46] MCS.INFO: 00038 - https://www.bram.us/2008/07/11/ror-progress-bar-helper/ [] [] 
[2015-01-07 12:54:46] MCS.INFO: 00039 - https://www.bram.us/2008/11/10/jsprogressbarhandler-033/ [] [] 
[2015-01-07 12:54:47] MCS.ERROR: 00040 - https://www.bram.us/demo/projects/lazierload/ [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1212/1285026452_0aeb38b6e6.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1074/1273115418_a77357040a.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1096/1273106588_91f7a736c6.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1324/1216309045_31ca82f9d9.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1262/1217169586_e4b2bfa7df.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1149/1216304291_63fd48d9c4.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1366/1216301505_51b3c590ff.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1184/1216299847_c57975bed2.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1085/1217158084_a9b059d25b.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1040/1216293529_3b7c044815.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1029/1084232736_5b8c023f46.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1318/1043062251_17071a8cc7.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://farm2.static.flickr.com/1221/1043059543_05713e6156.jpg [] [] 
[2015-01-07 12:54:47] MCS.WARNING: http://www.google-analytics.com/urchin.js [] [] 
[2015-01-07 12:54:47] MCS.INFO: 00041 - https://www.bram.us/2011/09/30/css-regions-and-css-exclusions/ [] [] 
[2015-01-07 12:54:47] MCS.INFO: 00042 - https://www.bram.us/2014/06/04/good-looking-shapes-gallery/ [] [] 

... 

E 'anche possibile passare in un file contenente un elenco di URL per la scansione, e per cambiare l'output JSON. Anche i pattern ignorati sono supportati.

Problemi correlati