Node.js 库“Socket.IO”中“房间”的安全性
Posted
技术标签:
【中文标题】Node.js 库“Socket.IO”中“房间”的安全性【英文标题】:Security of "Rooms" in the Node.js library "Socket.IO" 【发布时间】:2021-12-21 00:05:25 【问题描述】:我们正在考虑使用 Node.js 库“Socket.IO”中的“Rooms”开发应用程序。
当有多个房间时 分配 ID 以标识套接字所属的房间,但我们认为存在通过“会话劫持”和通信被劫持等方法泄露 ID 的危险。
有没有办法在确保安全的同时使用“房间”?
参考网址 https://socket.io/docs/v3/rooms/
【问题讨论】:
【参考方案1】:房间是一种仅限服务器的数据结构。客户无权访问房间的概念。没有多少会话劫持可以让任何客户直接访问房间。
因此,您的服务器控制对房间的所有访问。数据仅存在于服务器的内存中。该数据的安全性将完全取决于您的服务器的安全性。
现在,您的服务器可能会访问房间以响应来自您的客户端的消息,因此您必须对来自客户端的命令进行安全可靠的设计。由于您根本没有提供任何相关信息,我们无法对此发表评论,但这确实与房间概念无关 - 这是您应用设计的基本安全性。
注意:给定套接字的内部 socket.id 是客户端自己知道的 - 换句话说,它知道自己的 socket.id。 socket.io 不会与任何其他客户端共享其他客户端的 ID。但是,即使其他人会以某种方式窃取该 socket.id,他们也无法通过 socket.io 对它进行本地处理,因为根本没有 socket.io 客户端直接访问房间,即使您有一个 socket.id。
【讨论】:
以上是关于Node.js 库“Socket.IO”中“房间”的安全性的主要内容,如果未能解决你的问题,请参考以下文章