怎样保证socket.io 不被他人使用啊?
发布于 12 年前 作者 hanliangjun 9321 次浏览 最后一次编辑是 8 年前

小弟初学nodejs,在测试socket.io时发现在服务器启动了socket.io,只要在其他服务器上页面加入socket.io连接同样可以读取和发送socket。举个列子:比如我服务器上有个socket.io,连接地址是: http://xxxxxx/socket.io/socket.io.js, 但是其他用户在页面源码就看的到这个地址的,就相当于这个地址是暴露的。在任何其他网站页面调用这个代码

<script type="text/javascript" src='http://xxxxxx/socket.io/socket.io.js'></script>

同样可以在他页面接收我服务器的socket和发送socket,怎么来限制我服务器上的socket.io只能接收我的域名发起的和推送

10 回复

要伪造,怎样都能伪造,加个seesionid验证一下?

如果是这样,可能条件限制可能就要入库了,然后再去查询数据库,如果每条信息在推送前都去查询一下数据库的话可能实时性就不好了。我就不明白了为什么这个连外部调用这个socket.io都能同样接收和发送服务器的socket

socket.io的具体数据包格式是什么样的 比如我在 服务端启动一个一个socket.io的服务器,客户端用普通socket发送信息(包括http格式) 但是服务端在 io.sockets.on(‘connection’, 中根本没响应日志

如果知道具体的包格式,可以在服务端on connect的时候跟客户端做一个握手协议,这个数据格式是可以自己定义,只要客户端和服务端保持一致就行了

自己定义握手协议吧

哦我空了再去研究研究

还是没有搞定,来个大神解答一下啊

@hanliangjun 不要到数据库中查询,放内存中,memcached

session不就可以了

回到顶部