问题描述
我有一个 javascript 游戏,人们已经开始通过在检查元素中更改控制台中的 score 变量来进行黑客攻击,有没有办法让它不运行检查元素控制台中的代码?
解决方法
我会使用作用域变量,因此攻击者无法从控制台访问它们。
const unscoped = "you can reach me from the console";
console.log(unscoped);
{
const scoped = "you can NOT reach me from the console";
}
console.log(scoped);
另一种选择是将所有代码包装在一个 Immediately Invoking Function Expression (IIFE) 中:
"use strict";
(function game() {
//code goes here
for (var score = 0; score <= 5; score++) console.log("Score: ",score);
})();
console.log("Attacking attempt:");
console.log(score);
编辑:最后一个要求您使用严格模式(在文件开头输入 "use strict";
)
我发现这段代码很有帮助:
<script>
/* To Disable Inspect Element */
$(document).bind("contextmenu",function(e) {
e.preventDefault();
});
$(document).keydown(function(e){
if(e.which === 123){
return false;
}
});
</script>
参考: