是否有可能以某种方式阻止用户通过地址栏或使用 FireBug 之类的程序更改 JavaScript 变量?
答案1
JavaScript 是在客户端计算机上解释的原始源代码,因此答案是否定的。您最好在服务器上执行尽可能多的工作。您推送到客户端的任何 JavaScript 代码都可能被客户端篡改。
答案2
这个问题很容易让人产生这样的疑问:“你的最终目标是什么?”
正如其他人所说,不,你不能。JavaScript 是客户端,因此完全由客户端控制,而不是你。
正如 heavyd 所提到的,混淆可能会有用,但它肯定不是一种安全/万无一失的预防方法。
如果您出于安全原因需要这样做,那么答案很可能是首先不应该使用客户端 JavaScript 来完成。
答案3
您可以创建私有变量并使用访问器方法来获取它们
var mySingleton = function(){
/* here are my private variables and methods */
var privateVariable = 'something private';
function showPrivate(){
console.log(privateVariable);
}
/* public variables and methods (which can access private variables and methods ) */
return {
publicMethod:function(){
showPrivate();
},
publicVar:'the public can see this!'
}
}
var single = mySingleton();
single.publicMethod(); // logs 'something private'
console.log(single.publicVar); // logs 'the public can see this!'
答案4
不,但是您可以混淆代码,使其难以阅读和逆向工程。