Socket.io - "socket ID" 是否被视为敏感信息?
Socket.io - Is the "socket ID" considered sensitive information?
我正在使用 Node.js 和 socket.io 实现一个简单的聊天应用程序,想知道在整个 Objects 中共享所有客户端的套接字 ID 是否被认为是一种好的做法?
解释一下,我的每个用户都是这样表示的:
{
nick : 'John Doe',
dateJoined : Date.now(),
rank : 0,
id : socket.id
}
服务器上存储了我所有客户的列表const usersList = [ {...}, {...}, ... ]
我的所有客户都需要查看谁已连接,因此应将此 usersList
共享给所有客户。
如果客户端断开连接,则应通知所有人该#ID 已断开连接:
socket.on('userDisconnect', function(id) {
clientSideList = clientSideList.filter( user => user.id !== id );
}
所以我的问题是:如果每个客户端都知道其他客户端的套接字 ID,是否存在安全问题?他们会不会做出一些令人讨厌的事情,比如窃取数据或冒充其他用户?
感谢您的帮助
共享一个或多个套接字的 socket.id 值没有固有的内置安全风险。 socket.io 本身不包含客户端可以用来使用 socket.id
做任何事情的任何 API。所以,开箱即用,没有客户可以用 socket.id
做任何事情,如果他们知道的话。
现在,如果您开始支持接受 socket.id
值作为参数的 socket.io 消息,那么传递 socket.id 值确实允许某些任意客户端使用那些 socket.id
消息中的值。这是否会导致问题完全取决于您自己的设计以及您的服务器接受的消息。假设您支持一条消息,告诉服务器通过将用户的 socket.id 传递给它来从您的系统中删除该用户。然后,如果您开始传递 socket.id
值,那么任何人都可以使用您自己的服务器消息从您的系统中删除该用户。
因此,socket.id
值没有内置风险。如果您自己的服务器支持在给定 socket.id 值时可能造成损坏的操作,则可能存在风险。所以,这完全取决于你如何设计你的服务器,以及你是否在有人知道 socket.id
.
时防止恶意操作。
您可以将 socket.id 想象成 socket.io 服务器上的临时用户名。在大多数系统中,仅知道某些用户的用户名本身不会引起安全问题。只有当您公开未经授权的客户端可以指向特定用户名的操作时,您才会遇到问题。 socket.id
也一样。它就像一个临时用户名。
我正在使用 Node.js 和 socket.io 实现一个简单的聊天应用程序,想知道在整个 Objects 中共享所有客户端的套接字 ID 是否被认为是一种好的做法?
解释一下,我的每个用户都是这样表示的:
{
nick : 'John Doe',
dateJoined : Date.now(),
rank : 0,
id : socket.id
}
服务器上存储了我所有客户的列表const usersList = [ {...}, {...}, ... ]
我的所有客户都需要查看谁已连接,因此应将此 usersList
共享给所有客户。
如果客户端断开连接,则应通知所有人该#ID 已断开连接:
socket.on('userDisconnect', function(id) {
clientSideList = clientSideList.filter( user => user.id !== id );
}
所以我的问题是:如果每个客户端都知道其他客户端的套接字 ID,是否存在安全问题?他们会不会做出一些令人讨厌的事情,比如窃取数据或冒充其他用户?
感谢您的帮助
共享一个或多个套接字的 socket.id 值没有固有的内置安全风险。 socket.io 本身不包含客户端可以用来使用 socket.id
做任何事情的任何 API。所以,开箱即用,没有客户可以用 socket.id
做任何事情,如果他们知道的话。
现在,如果您开始支持接受 socket.id
值作为参数的 socket.io 消息,那么传递 socket.id 值确实允许某些任意客户端使用那些 socket.id
消息中的值。这是否会导致问题完全取决于您自己的设计以及您的服务器接受的消息。假设您支持一条消息,告诉服务器通过将用户的 socket.id 传递给它来从您的系统中删除该用户。然后,如果您开始传递 socket.id
值,那么任何人都可以使用您自己的服务器消息从您的系统中删除该用户。
因此,socket.id
值没有内置风险。如果您自己的服务器支持在给定 socket.id 值时可能造成损坏的操作,则可能存在风险。所以,这完全取决于你如何设计你的服务器,以及你是否在有人知道 socket.id
.
您可以将 socket.id 想象成 socket.io 服务器上的临时用户名。在大多数系统中,仅知道某些用户的用户名本身不会引起安全问题。只有当您公开未经授权的客户端可以指向特定用户名的操作时,您才会遇到问题。 socket.id
也一样。它就像一个临时用户名。