外部开发人员可以在运行时访问闭包变量

时间:2012-10-08 14:05:56

标签: javascript

基本上我想在客户端存储一个我不希望人们查看或更改的变量。

在以下代码示例中:

(function () {
    var foo = 'bar';
})();

任何人都可以使用工具或浏览器访问和/或(更重要的是)更改foo的值吗?可以理解可能会执行此操作的更多信息或工具的链接。我将在同一时间研究更多。

提前致谢

2 个答案:

答案 0 :(得分:3)

是的,他们可以修改foo的值。作为一般规则,如果您不希望客户端操纵该值,请不要让它们访问它(即,将用户ID或此类信息放在DOM或客户端)。您可能需要进行一些state management研究,加密Cookie,会话,或者如果您使用ASP.NET ViewState/ViewBag等。

答案 1 :(得分:0)

可以将javascript注入任何页面,从那里你可以操作页面上的每个javascript对象/变量。因此,javascript正在接收的任何数据都应加密(如果您担心安全性)。

为了给您一点提示,请尝试打开您的开发人员工具。在chrome中,Control-Shift-I。单击脚本选项卡,然后您将看到脚本正在使用的所有变量。可以双击脚本中的任何位置并添加/删除代码片段。

F.Y.I如果您使用的是Firefox,我强烈推荐使用Firebug。它超越了chrome的开发工具,但我发现铬更快..至少在我的慢速笔记本电脑(Ubuntu FTW)上。

希望这有帮助