从 JS 中的检查元素中阻止代码 运行?
Block code run from the inspect element in JS?
我有一个 javascript 游戏,人们已经开始通过在 inspect 元素中更改控制台中的得分变量来进行黑客攻击,有没有办法使 inspect 元素控制台中的代码不运行?
我发现这段代码很有用:
<script>
/* To Disable Inspect Element */
$(document).bind("contextmenu",function(e) {
e.preventDefault();
});
$(document).keydown(function(e){
if(e.which === 123){
return false;
}
});
</script>
参考:
我会使用作用域变量,因此攻击者无法从控制台访问它们。
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";
)
我有一个 javascript 游戏,人们已经开始通过在 inspect 元素中更改控制台中的得分变量来进行黑客攻击,有没有办法使 inspect 元素控制台中的代码不运行?
我发现这段代码很有用:
<script>
/* To Disable Inspect Element */
$(document).bind("contextmenu",function(e) {
e.preventDefault();
});
$(document).keydown(function(e){
if(e.which === 123){
return false;
}
});
</script>
参考:
我会使用作用域变量,因此攻击者无法从控制台访问它们。
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";
)