2012-08-01 88 views
31

我們在一個Linode盒子上安裝了端口8080上的websocket服務器。 Chrome和Opera工作得很好。然而,Firefox會抱怨操作不安全。Firefox Websocket安全問題

「的操作是不安全的:代號18」

如果我嘗試在Web控制檯創建一個新的WebSocket對象的頁面加載一切都好了。但是,在頁面加載之後有些東西是擰緊的,我無法再創建對象。請參閱附件截圖。 enter image description here

我不知道什麼操作是不安全的,甚至如何去做診斷。

+1

我應該注意到,這適用於連接到本地主機的開發模式。 Websocket服務器直接暴露在Linode網絡上 – bcardarella 2012-08-01 22:01:06

+0

這是一個新版本的Firefox嗎?由於安全問題,他們禁用了幾個版本的Websockets。 – Dreen 2012-08-01 22:03:01

+0

@Dreen它是最新的,但你可以在截圖的頂部看到我可以建立一個Websoccket連接沒有問題在加載頁面之前 – bcardarella 2012-08-01 22:04:41

回答

31

我解決了這個問題。該應用程序本身在SSL下,但被訪問的websocket不是。 Chrome和Opera並不在意,但Firefox可以。據:

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

這是已知的,不認爲是一個錯誤。 Mozilla的迴應:wontfix

解決方案,SSL下放的WebSocket服務器,並使用WSS://

+1

你可以接受這個。 – mac01021 2014-03-05 14:46:27

+4

您能否提供如何將websocke服務器置於SSL下並使用wss://我不確定您的意思。 – Leeish 2014-03-19 15:30:30

+0

@Leeish要使用make一個安全的websocket客戶端,只需使用'wss://'指定url。要在服務器上啓用SSL/TLS,您需要參考您使用的任何websocket服務器的文檔。有可能不支持TLS。 – newprogrammer 2015-01-14 19:34:06

1

這是一個基於有限信息的預感,我可能應該把它放到評論中,但我沒有足夠的聲望點來做到這一點。看看你的日誌,好像從收到[object Websocket](時間17:46:36.683)開始經過24秒,直到你得到The connection to ws://.....(時間17:47:00:952)錯誤信息。長延遲導致我相信服務器可能會超時並關閉WebSocket連接。查看this answer尋找潛在解決方案。

+0

如果是這樣的話那麼爲什麼Chrome和Opera工作得很好? – bcardarella 2012-08-01 23:50:52

+0

好點,可能不是服務器端超時,除非服務器響應不同的用戶代理,這不太可能... – laker 2012-08-01 23:55:18

+0

實際上,無論瀏覽器如何,都可能發生同樣的超時,但是隻有Firefox報告了一個securityError。其他瀏覽器是否重新建立websocket?順便說一句Linode支持websocket?一個快速的谷歌搜索沒有提供確鑿的信息 – laker 2012-08-02 00:03:39

32

正如你在另一個答案指出,https://開頭,以WS://默認情況下,在Firefox不允許的。

去firefox的about:config和切換network.websocket.allowInsecureFromHTTPS將擺脫SecurityError。

+0

是的,這工作!至少有一個解決方法來處理Firefox的惡意限制。 – 2013-12-21 19:59:39

+4

@FaisalMushtaq:這不是一個「討厭的限制」,而是真正的安全最佳實踐。 – berkes 2016-05-10 11:06:38