2012-08-01 13 views
31

Abbiamo un server Websocket sulla porta 8080 su una scatola Linode. Chrome e Opera funzionano perfettamente. Firefox tuttavia si lamenta che l'operazione non è sicura.Problema di sicurezza di Websocket per Firefox

"L'operazione è insicuro: Codice 18"

Se cerco di creare un nuovo oggetto WebSocket nella console web prima che la pagina viene caricata tutto va bene. Tuttavia, dopo che la pagina è carica, qualcosa non funziona, quindi non posso più creare l'oggetto. Vedi lo screenshot allegato. enter image description here

Non ho idea di quale operazione sia insicura o persino come fare per diagnosticare questo.

+1

Devo notare che questo funziona correttamente in modalità di sviluppo connessione a localhost. Il server Websocket è esposto direttamente a Internet su Linode – bcardarella

+0

Si tratta di una nuova versione di Firefox? Hanno disabilitato Websockets per alcune versioni a causa di problemi di sicurezza. – Dreen

+0

@Dreen è l'ultimo ma come puoi vedere nella parte superiore dello screenshot sono in grado di stabilire una connessione Websket senza problemi prima di caricare la pagina – bcardarella

risposta

31

Ho risolto questo. L'app stessa è in SSL ma il websocket a cui si accede non lo è. Chrome e Opera non si preoccupano, ma Firefox lo fa. Secondo:

https://bugzilla.mozilla.org/show_bug.cgi?id=303952

Questo è noto e non è considerato un bug. La risposta di Mozilla: WONTFIX

Solution, messo server di websocket sotto SSL e utilizzare WSS: //

+1

Puoi accettarlo. – mac01021

+4

Puoi fornire informazioni su come mettere server websocke su SSL e usare wss: // 'Non sono sicuro di cosa intendi esattamente per farlo. – Leeish

+0

@Leeish Per usare make un client websocket sicuro, basta specificare l'url con 'wss: //'.Per abilitare SSL/TLS sul server, è necessario fare riferimento alla documentazione di qualsiasi server websocket che si sta utilizzando. È possibile che TLS non sia supportato. – newprogrammer

1

Questa è un'intuizione basata su informazioni limitate e probabilmente dovrei inserirla in un commento, ma non ho ancora abbastanza punti reputazione per farlo.

Guardando il registro, sembra come se 24 secondi stanno passando dalla ricezione della [object Websocket] (tempo di 17: 46: 36,683) fino ad arrivare The connection to ws://..... (tempo di 17: 47: 00: 952) Errore message.The lungo ritardo Mi porta a credere che il server potrebbe essere temporizzato e chiudere la connessione web. Guarda this answer per una potenziale soluzione.

+0

Se è così, perché Chrome e Opera funzionano bene? – bcardarella

+0

buon punto, probabilmente non un timeout sul lato server a meno che il server non risponda in modo diverso a diversi user-agent, il che è improbabile ... – laker

+0

in realtà, potrebbe essere possibile che si verifichi lo stesso timeout, indipendentemente dal browser, ma che solo Firefox sta segnalando un securityError. Gli altri browser stanno ristabilendo una websocket? BTW supporta il web socket Linode? Una ricerca rapida su google non ha fornito informazioni conclusive – laker

32

Come fai notare in un'altra risposta, https: // per WS: // non è consentito di default su Firefox.

Passando alle informazioni su firefox: config e commutazione network.websocket.allowInsecureFromHTTPS eliminerà SecurityError.

+0

Sì, questo ha funzionato! Almeno c'è una soluzione alternativa per affrontare la brutta restrizione di Firefox. –

+4

@FaisalMushtaq: non è una "brutta limitazione" ma è davvero una best practice per la sicurezza. – berkes

Problemi correlati