所以我正在用JavaScript写一个游戏,最大的问题是,无论是谁玩它,谁可能对JS有很好的了解,就可以打开我的源代码,弄清楚它是如何工作的,然后把一个game.score = 100000000000000;插入控制台。然而,似乎除了混淆脚本之外,将所有内容包装在一个匿名函数中也能起到作用。
(function() {
game_start = function() {
//etc
}
//etc
})();当我尝试从Chrome控制台运行任何代码时,都会出现undefined。这是想要的结果,但是有没有办法绕过我的方法,让它变得无用呢?或者甚至是一种更好的方法来防止从控制台运行东西?
发布于 2012-09-19 08:17:33
没有办法确保那个人不会作弊。即使代码被严重混淆(我说的是H5b(b){if(b.pd()&&b.Ca&&b.gKa){var a=b.ra(RT.Nwa)之类的东西),您仍然可以查看UI更改或网络请求,并从那里跟踪它。
有些人使用AJAX调用来验证分数,例如,每次分数增加/下降,应用程序都会向后端发出AJAX调用,您也会在后端跟踪分数。当用户提交最终分数时,您将其与后端分数进行比较,如果分数不同,则您将知道此人作弊。
但是,这并不会阻止人们编写执行这些ajax调用的脚本,这种方式会使它的得分有效。
不能,没有办法确保用户端的代码不会被破坏。
发布于 2012-09-19 08:09:40
抱歉,当游戏在用户的机器上运行时,没有办法真正防止用户作弊。在用户机器上运行的任何代码都可以由用户操作。当你想让作弊变得不可能时,你必须在服务器上实现所有的游戏逻辑,不要发送任何玩家不应该知道的信息,也不要接受任何玩家不允许执行的命令。
https://stackoverflow.com/questions/12486809
复制相似问题