【发布时间】:2012-10-12 17:52:12
【问题描述】:
在我之前的问题中: Securing javascript game timing
... 很明显,Javascript/Canvas 游戏中的客户端计时根本不安全。我知道不信任客户的口头禅——这首先是导致我挣扎的原因。 :-)
所以,如果我确实将所有时间转移到服务器并处理它,这是一个后续问题。游戏显然需要在提交之前完成。由于游戏拼图全是 Javascript,这就引入了操纵客户端代码来伪造游戏完成的问题。
我在一个单独的类文件中创建了游戏 JS 代码。如果我这样实例化游戏:
var game;
$document.ready(function(){
game = new Game();
});
...然后,我可以通过控制台访问“游戏”对象及其所有方法和变量。
但是,如果我这样做:
$document.ready(function(){
var game = new Game();
});
...然后我无法通过控制台访问“游戏”对象。这似乎有帮助,但有什么我不知道的 - 这个对象仍然可以以某种我不知道的方式访问,还是让它成为该函数中的私有 var 更安全一些?
谢谢!
【问题讨论】:
-
这完全取决于您的黑客准备付出多少努力。他们可以编写或使用几种开源 javascript 实现之一,并在他们完全控制的沙箱中运行您的代码。但是完全忽略执行 javascript 并弄清楚如何计算响应以发送服务器以“完成游戏”可能要简单得多。
-
显然你无法阻止他们操纵它,你所能做的就是让它变得更难做。将游戏存储在范围内确实会拒绝他们访问该游戏,但是是什么阻止他们生成自己有权访问的游戏?
-
@Kevin - 是的,我以为我在范围内有一些东西 - 没有考虑他们实例化自己的。至于黑客准备投入多少努力——如果这个项目成功了,可能会有足够的动力,所以我只是从一开始就试着提前思考。感谢您的帮助。
标签: javascript jquery security