2013-12-11 73 views
0

我在nginx後面運行帶有node.js的Socket.IO,並且只通過所需的域進行代理。它是一個PHP站點,並且該站點中的所有安全性都是使用PHP完成的。Socket.IO HTTP - 如何保護配置

對於Socket.IO用戶通過傳遞他們的用戶名,如下圖所示認證:

iosocket.on('connect', function() { 
    iosocket.emit('userid', '1000015349'); 

這工作得很好,但我想知道是否有其他措施,我可以impliment進一步保護此配置。

注:我沒有使用SSL,因爲我聽說混合HTTPS的WebSockets一個HTTP網站是不是最好的方法,並會引起如Firefox瀏覽器的一些問題。

可以餅乾,令牌等幫助嗎?我可以將一個唯一的標記放入瀏覽器DOM登錄後,可以用來驗證連接或cookie,如果更好。

thx

+0

如果您的網站安全性依賴於php會話,您可能會喜歡在您的node.js應用程序中使用這些php會話數據。以某種方式(不知道你如何以及在哪裏存儲會話)。 – birukaze

+0

我將php會話數據存儲在memcached中......是否真的可以從這些php會話中執行node.js/socket.io身份驗證?你有沒有這樣做? – Adam

回答

1

爲什麼不,數據是數據。你只需要解碼它,並使用字符串鍵鏈接會話ID用於存儲會話數據。我會實現(SessionHandler)並在php的入口點分配一個自定義會話處理程序。在public bool write (string $session_id , string $session_data)我會鏈接SID與$ session_id param(注意SID!= $ session_id參數,使用文件作爲保存處理程序,不知道什麼是與memcache或redis或其他緩存保存處理程序)。 在node.js進入點我會讀取cookie來找出SID,從會話存儲中檢索編碼的會話數據字符串,解碼它(在stackoverflow中查找 - 這裏有一些php會話數據編碼器\解碼器的JavaScript實現),並使用在我的node.js應用程序中。

其實,這是我要做的事在我的項目之一。