我在这个问题上的重点是制作 HTML5 游戏。目的是帮助减少/防止作弊。
例如,如果全局范围内的变量持有分数,var score = 0
那么仅仅通过运行就很容易作弊javascript:void(score = 9999999999);
。
但如果我有更多这样的东西:
(function() {
var score = 0;
// game logic here
})();
score
封闭之外的任何东西都可以访问吗?有没有办法让玩家修改它从而伪造他们的分数?
我在这个问题上的重点是制作 HTML5 游戏。目的是帮助减少/防止作弊。
例如,如果全局范围内的变量持有分数,var score = 0
那么仅仅通过运行就很容易作弊javascript:void(score = 9999999999);
。
但如果我有更多这样的东西:
(function() {
var score = 0;
// game logic here
})();
score
封闭之外的任何东西都可以访问吗?有没有办法让玩家修改它从而伪造他们的分数?
客户端发生的一切都是“可破解的”,因为您根本无法控制它。防止这种情况的唯一真正方法是使用服务器端验证(例如 AJAX 调用)。
关闭之外的任何东西都可以访问分数吗?
不,不是。
有没有办法让玩家修改它从而伪造他们的分数?
是的。见我的第一句话。
在该闭包之外,score
不存在(或至少不存在) score
。
如果您想防止作弊,当整个游戏在客户端运行时,唯一真正的方法是在服务器上重新创建游戏环境和用户输入并进行验证。
否则,任何人都可以修改您的客户端代码并将他们想要的内容发送到您的服务器。