避免从浏览器控制台修改Javascript变量

Edu*_*rdo 0 javascript security variables global

我有个问题.我定义了一些全局变量,并将其命名为一个名为"app"的对象.例:

window.app : {
    foo : null,
    bar : null,
}
Run Code Online (Sandbox Code Playgroud)

好吧,我的想法是我希望能够通过调用app.foo ="baz"或app.bar ="baz"从任何模块修改这些变量,但我不希望用户能够修改那些来自浏览器控制台的变量(元素检查器).

可能吗?

PD:嗯,我有一个与服务器同步的Backbone.js集合.我不希望用户能够使用控制台修改该集合

Gol*_*rol 6

不.浏览器是用户的域名.他们可以通过各种方式修改脚本并注入自己的功能(通过控制台或浏览器插件).这就是为什么你不应该盲目信任服务器端用户输入的原因之一.

他们甚至可以手动伪造一个完整的请求,诱使你的服务器认为你的javascript代码提出了一些请求.

如果您希望这些值是安全的,则需要将它们保留在服务器上.当然,只要您有可能再次验证服务器上的值,您就可以将它们发送给客户端.