修改闭包中的变量

时间:2012-04-05 12:32:51

标签: javascript closures

我对这个问题的关注是制作HTML5游戏。目的是帮助减少/防止作弊。

如果全局范围内的变量保持得分,例如var score = 0,那么只需运行javascript:void(score = 9999999999);就可以轻易作弊。

但如果我有更多这样的东西:

(function() {
    var score = 0;
    // game logic here
})();

封闭之外的任何东西都可以访问score吗?玩家有没有办法修改它,从而伪造他们的分数?

2 个答案:

答案 0 :(得分:4)

客户端发生的一切都是“黑客”,因为你根本无法控制它。防止这种情况的唯一真正方法是使用服务器端验证(例如AJAX调用)。

  

关闭之外的任何东西都可以获得分数吗?

不,不是。

  

玩家有没有办法修改它,从而伪造他们的分数?

烨。见我的第一个陈述。

答案 1 :(得分:2)

在该关闭之外,score不存在(或者至少 score没有)。

如果你想防止作弊,整个游戏在客户端运行的唯一真正方法是在服务器上重新创建游戏环境和用户输入并验证。

否则,任何人都可以修改您的客户端代码并将他们想要的内容发送到您的服务器。