检测用户何时在浏览器中执行 JavaScript
Detecting when a user executes JavaScript in the browser
我目前正在开发一款完全基于浏览器的游戏(la Cookie Clicker),我正试图将用户利用可见的 JavaScript 来欺骗他们的游戏存档的可能性降到最低.为了便于说明,我们来看一个假设的函数;
let user = {
money: 0
};
function addMoney(amount) {
user.money += amount;
}
如果这在我的游戏中是一个真正的功能,任何用户都可以简单地弹出开发者控制台,输入 addMoney(1e100)
,并立即破坏我的潜在玩家群中任何竞争的可能性。
我想知道是否有任何方法可以禁用外部 JavaScript 输入(通过开发者控制台或通过在地址栏中使用 javascript:()
注入)以及是否可以一个东西不存在,是否至少可以 检测 外部 JavaScript 而不是 JavaScript 由站点本身在内部执行?
不多说了:
如果 'cheater' 足够坚定(和熟练),你不会阻止他们,但 obfuscating/minfying 代码会使它变得更加困难并阻止他们中的绝大多数 - 当然随意的。有很多可用的工具可以做到这一点,而且很容易做到。
除了此处提到的混淆选项外,还有 JavaScript 安全工具,如 Jscrambler,可在检测到任何篡改尝试时破解代码。他们 an example 与您描述的相同。
我目前正在开发一款完全基于浏览器的游戏(la Cookie Clicker),我正试图将用户利用可见的 JavaScript 来欺骗他们的游戏存档的可能性降到最低.为了便于说明,我们来看一个假设的函数;
let user = {
money: 0
};
function addMoney(amount) {
user.money += amount;
}
如果这在我的游戏中是一个真正的功能,任何用户都可以简单地弹出开发者控制台,输入 addMoney(1e100)
,并立即破坏我的潜在玩家群中任何竞争的可能性。
我想知道是否有任何方法可以禁用外部 JavaScript 输入(通过开发者控制台或通过在地址栏中使用 javascript:()
注入)以及是否可以一个东西不存在,是否至少可以 检测 外部 JavaScript 而不是 JavaScript 由站点本身在内部执行?
不多说了:
如果 'cheater' 足够坚定(和熟练),你不会阻止他们,但 obfuscating/minfying 代码会使它变得更加困难并阻止他们中的绝大多数 - 当然随意的。有很多可用的工具可以做到这一点,而且很容易做到。
除了此处提到的混淆选项外,还有 JavaScript 安全工具,如 Jscrambler,可在检测到任何篡改尝试时破解代码。他们 an example 与您描述的相同。