Javascript安全问题

在我之前的问题中: 保护javascript游戏时机

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

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

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

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

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

但是,如果我这样做:

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

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

谢谢!

不要太关心控制台。 是的,如果有全局对象的方法很容易被激发以“赢”游戏,那么欺骗是一种很好的可能性,但是当你演示时它很容易被阻止。

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