【发布时间】:2020-04-30 06:36:03
【问题描述】:
在 socket.io 房间中,一些 socket id 比其他 socket id 拥有更多特权。我存储了拥有更多权限的套接字 ID,并检查您是否有权执行某个操作,以确保您的套接字 ID 在我存储的套接字 ID 中。我的疑问是:既然每个人都知道房间里的所有其他套接字 id,那么有人可以冒充另一个套接字 id 以获得更多权限吗?
【问题讨论】:
标签: javascript socket.io
在 socket.io 房间中,一些 socket id 比其他 socket id 拥有更多特权。我存储了拥有更多权限的套接字 ID,并检查您是否有权执行某个操作,以确保您的套接字 ID 在我存储的套接字 ID 中。我的疑问是:既然每个人都知道房间里的所有其他套接字 id,那么有人可以冒充另一个套接字 id 以获得更多权限吗?
【问题讨论】:
标签: javascript socket.io
没有简短的答案,因为它取决于您自己的设计和实现。但是,这并不存在固有风险,这取决于您使用 ID 的方式。
请查看Socket.io - Is the "socket ID" considered sensitive information?
如果您觉得这很有用,请标记为答案。谢谢
【讨论】:
您可以使用 JWT 轻松避免这种情况,因此您可以始终信任有效负载中的 id。
JSON Web 令牌可以有任何对象,例如{id: 'random-id', privilege: 'admin},可以在您的后端使用您的密码进行验证。
有关 NodeJ,请参阅 jsonwebtoken 或 socketio-jwt。
希望这能有所帮助。
【讨论】: