【发布时间】:2013-05-14 08:10:44
【问题描述】:
我一直在忙于使用 HTML5 技术创建一个小型多人游戏。我使用 Node.js 和 Socket.IO 来管理服务端业务。
我的问题在于用户能够通过 Chrome 控制台(以及我确定的其他各种控制台)输入他们自己的 JavaScript。例如,用户可能会在控制台中输入以下内容:
socket.emit("new player", {user: username, x: localPlayer.getX(), y: localPlayer.getY()});
这会在游戏中添加一个新玩家。我应该停止这种情况的最佳方法是什么?有没有办法可以捕获这些条目并简单地拒绝它们(然后拍打用户的脸)?如果我可以通过更改变量来阻止他们编辑 GUI 之类的东西,那也很好,例如:
gameStatus = "trolled lol troll client-side editing lol";
谢谢, 乔尔
【问题讨论】:
-
你不能。你永远不能相信来自客户的任何东西。您需要验证服务器上的所有内容。
-
@SLaks 我认为用户在询问如何区分由他的脚本发送到服务器的请求和由某人写入控制台的脚本。
-
@Asad:没错。这是完全不可能的。
-
@SLaks 那么你将如何解决这个问题呢?
标签: javascript html node.js socket.io