0

在我之前的问题中: Securing javascript game timing

... 很明显,Javascript/Canvas 游戏中的客户端计时根本不安全。我知道不信任客户的口头禅——这首先是导致我挣扎的原因。:-)

因此,如果我确实将所有时间转移到服务器并处理它,这是一个后续问题。游戏显然需要在提交之前完成。由于游戏拼图全是 Javascript,这就引入了操纵客户端代码来伪造游戏完成的问题。

我在一个单独的类文件中创建了游戏 JS 代码。如果我这样实例化游戏:

var game;
$document.ready(function(){
  game = new Game();
});

...然后,我可以通过控制台访问“游戏”对象及其所有方法和变量。

但是,如果我这样做:

$document.ready(function(){
  var game = new Game();
});

...然后我无法通过控制台访问“游戏”对象。这似乎有帮助,但有什么我不知道的 - 这个对象是否仍然可以以我不知道的某种方式访问​​,或者让它成为该函数中的私有 var 更安全一些?

谢谢!

4

1 回答 1

0

不要太在意控制台。是的,如果有全局对象的方法可以很容易地被触发以“赢得”游戏,那么作弊的可能性很大,但正如您所演示的那样,它很容易被阻止。

因此,黑客只会监听(查看网络窗格)向您的服务器发出的请求并手动触发它们。如果它们只是一些简单的 url,比如/action=startand /action=end,他可以很容易地手动触发它们而无需任何时间。因此,您需要防止这种情况发生(尽管您永远无法真正做到安全),例如通过添加额外的凭证令牌。或者您可以在游戏代码中嵌入一些“秘密”,这些“秘密”在游戏过程中被泄露,需要发送到服务器以证明其合法性。当然它们可以从你的代码中读出,但是你必须让它对黑客来说太复杂了。这有点像默默无闻的安全......</p>

于 2012-10-12T18:28:01.567 回答