我一直在制作一个简单的socket.io程序,玩家可以在环境中移动,客户端发送服务器事件。
但是,客户端似乎可以使用控制台伪造数据并将其发送到服务器(通过使用a, b, ... = function(..)
)。
是否有解决方法,使服务器仅接受“真实”数据,或防止客户端发送虚假数据?
答案 0 :(得分:2)
您的服务器应始终保持应用程序的状态,并具有每种状态的所有可能动作的列表。
例如,如果您的角色可以在地图上移动,则服务器应始终保留玩家的坐标。假设玩家在坐标(x, y)
处。服务器将仅允许将播放器移动到(x+1, y+1)
,(x-1, y+1)
,(x+1, y-1)
或(x-1, y-1)
的消息。任何其他消息都应该丢弃。
如果收到一条消息,提示玩家希望移至(x+500, y+500)
,则应忽略该消息,并可能将玩家标记为作弊者并断开其连接。