客户端的socket.id可以用于恶意活动吗?

时间:2019-08-28 15:02:35

标签: javascript node.js sockets websocket socket.io

我正在研究一款多人游戏,其中,玩家的坐标,大小和状态存储在JSON对象“ playersPublic”中,该对象还将玩家的公共数据也保存为JSON对象,每个玩家的关键是他们的socket.id 。将其作为键是很重要的,因为它是唯一的,并且我确实还有其他具有播放器私有数据(具有相同键)的JSON对象,并且当使用单个播放器的数据时,将它们在公共对象中的数据与私有对象(经常发生)需要通过键来发生,以避免过多的循环。

在每一帧中,我需要将所有玩家的公共信息(坐标,状态等)发送给所有玩家,以便在前端,每​​个玩家都可以相应地更新其地图。我采取的第一种方法就是简单地拥有

  

setInterval(function(){io.sockets.emit('players',playersPublic)},1000/60);

每秒以60次释放播放器的公共数据JSON。我围绕此设计构建了许多体系结构,但是我错过了一个潜在的关键问题:每个玩家的公共数据的关键也是他们的socket.id,并且通过将此JSON发送给所有玩家,我实际上是在发送所有人的socket.id玩家也是如此。

所以我们提出了我的问题:这到底有多少坏习惯?如果一个玩家可以访问另一个玩家的socket.id,他们可以使用它来代表自己发送数据或进行其他恶意活动吗?

socket.id不用于验证玩家发出的任何信息。

如果这是不好的做法,那么解决此问题的正确方法是什么?我确实考虑过将玩家的数据复制到一个数组中,然后发送出去,但是这在内存方面似乎很繁重,尤其是因为它每秒需要发生60次。

在此先感谢您的帮助!

0 个答案:

没有答案
相关问题