我正在运行Socket.IO,其中node.js位于nginx后面,只能通过所需的域进行代理。它是一个PHP站点,站点中的所有安全性都是用PHP完成的。
对于Socket.IO用户,通过传递他们的UserID进行身份验证,如下所示:
iosocket.on('connect', function () {
iosocket.emit('userid', '1000015349');
这很好但我很想知道是否还有其他措施可以进一步保护这种配置。
注意:我没有使用SSL,因为我听说将HTTP站点与HTTPS websockets混合不是最好的方法,并且会在某些浏览器中引起问题,例如firefox。
Cookie,令牌等有帮助吗?我可以在登录后的浏览器DOM中添加一个唯一的令牌,用于验证连接或cookie,如果更好的话。
THX
答案 0 :(得分:1)
为什么不,数据就是数据。您只需解码它并将会话ID与用于存储会话数据的字符串密钥链接。我实现(SessionHandler)并在php的输入点分配一个自定义会话处理程序。在public bool write ( string $session_id , string $session_data )
我用$ session_id param链接SID(注意SID!= $ session_id param,使用文件作为保存处理程序,不知道什么是memcache或redis或其他缓存保存处理程序)。
在node.js进入点我读取cookie以找出SID,从会话存储中检索编码的会话数据字符串,解码它(在这里查找stackoverflow - 有一些javascript实现的php会话数据编码器\解码器)并使用我的node.js应用程序。
实际上,这就是我在其中一个项目中的表现。