Javascript安全问题

时间:2012-10-12 17:52:13

标签: javascript jquery security

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

...很明显,Javascript / Canvas游戏中的客户端计时根本不安全。我知道关于不信任客户的口头禅 - 这就是我首先引起斗争的原因。 : - )

所以,如果我确实将所有时间都移到服务器上并且只是处理它,那么这是一个后续问题。游戏显然需要在提交之前完成。由于游戏难题都是Javascript,这引入了操纵客户端代码以假冒游戏完成的问题。

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

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

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

但是,如果我这样做:

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

不要过多关心控制台。是的,如果有全局对象的方法很容易被解雇以“赢”游戏,那么作弊的可能性很大,但是当你演示时它很容易被阻止。

因此,黑客只会监听(查看网络窗格)向您的服务器发出的请求并手动触发它们。如果他们只是一些简单的网址,例如/action=start/action=end,他可以非常轻松地手动触发它们,而无需任何时间。因此,您需要预防(尽管您永远无法真正确保安全),例如通过添加其他凭据令牌。或者你可以在游戏代码中嵌入一些“秘密”,这些秘密在游戏过程中被揭示,并且需要被发送到服务器以证明合法性。当然,他们可以从你的代码中读出来,但你必须让黑客太复杂。这有点像security by obscurity ...