我正在尋找一個網站實施彗星喜歡的行爲。到目前爲止,Node.js(及其各種衍生產品)似乎領先於其他領域(恕我直言)。但是,我不禁注意到,所有客戶端JS負責更新客戶端(瀏覽器等),通信端口在客戶端腳本中明顯硬編碼。彗星般的行爲是否會使用node.js構成安全威脅?
對我來說(我可能是錯的),就像發佈服務器的哪些端口是開放的(因此歡迎黑客通過該端口進行攻擊)。我是過度偏執狂還是這真的是一個令人擔憂的事情?
我正在尋找一個網站實施彗星喜歡的行爲。到目前爲止,Node.js(及其各種衍生產品)似乎領先於其他領域(恕我直言)。但是,我不禁注意到,所有客戶端JS負責更新客戶端(瀏覽器等),通信端口在客戶端腳本中明顯硬編碼。彗星般的行爲是否會使用node.js構成安全威脅?
對我來說(我可能是錯的),就像發佈服務器的哪些端口是開放的(因此歡迎黑客通過該端口進行攻擊)。我是過度偏執狂還是這真的是一個令人擔憂的事情?
我真的很想說彗星沒有那麼安全,但那不是真的。
首先,它通常不會不安全的原因是Comet請求就像普通的HTTP請求一樣,但生命週期稍長。因此,它們與您編寫的任何其他HTTP端點一樣,都要遵守相同的安全要求(例如,確保您驗證了用戶的會話cookie等)。
但是,長生命週期意味着底層用戶有可能通過彗星連接中途改變。這可能會造成一些有問題的用戶體驗。例如,想象一個聊天應用程序,該應用程序使用Comet streaming將消息發送到瀏覽器,並使用常規HTTP輪詢來更新好友列表,顯示用戶已經聯機的哪些朋友。現在研究這個方案...
......現在Sally看到她什麼時候發現第一個窗口?朋友列表已更新,以顯示她的所有朋友,所以它看起來像她登錄那裏。但是彗星連接被認證給了弗雷德,並且仍然是開放的。所以莎莉得到弗雷德的信息,而不是她的。 EWWW。
這是您需要注意的事情,而不是擔心端點的可見性。 全部 http端點是可見的,並且可以使用現代瀏覽器調試器和網絡數據包嗅探器輕鬆進行反向設計。安全來自在服務器上實現健全的身份驗證策略,而不是隱藏如何連接到服務器。
最後,請注意,您的問題或此答案中沒有任何內容是針對node.js的。所有彗星解決方案都具有相同的特徵。
感謝您的解釋和詳細的情況。我並不是完全瘋狂地發現這個「安全漏洞」,但正如你所說的那樣,存在更大的問題。順便說一句,您能否舉出一個或兩個您在答案中提到的「服務器上的一些理智的身份驗證策略」。謝謝 –
我敢打賭,他們知道端口80在您的網絡服務器上也是開放的!更好地關閉它,以確保安全! (建議真的是關閉你不需要的服務,它在源代碼中可見的事實並不是真正的問題,有很多其他方法可以讓人們找出連接到的東西......) – jcoder
@JohnB:不完全相同的問題。每個人都知道端口80是用於TCP/HTTP的默認端口 - 除此之外,任何其他端口的廣告似乎對我來說都是不必要的粗心 - 或者它是什麼? –
如果你真的關心它,你可以將端口修改爲一個變量。 –