1

如您所知,Web 应用程序通常使用 JavaScript 将函数附加到 DOM 元素,以便用户可以与应用程序交互。

然而,令我惊讶的是,一些 Web 应用程序在全局空间中公开了这些功能,以便我可以在浏览器控制台中执行它们。这是否被认为是脆弱的和不好的做法?

例如,通过使用这些公开的函数,我也许可以创建一个脚本并在控制台中运行它来做一些没有预料到的创造性事情。

出于这个原因,我是否应该尽可能地在控制台中隐藏对我的 Web 应用程序的访问?很明显我应该这样做,但我可能错了,因为我对 Web 开发还很陌生。

4

1 回答 1

3

我认为这主要是一个基于意见的问题,可能不太适合 SO 的格式。但是我想回答,所以我会用CW回答。

避免创建全局变量的主要原因不是代码的安全性或隐私性。您的客户端 JavaScript 代码是公共知识。任何想知道你的代码做什么的人都可以通过下载你的脚本并查看它们来找到答案。即使你混淆了你的脚本,也有很好的非混淆器可以帮助它们再次可读。Google 的 Closure Compiler,尤其是高级设置,让这变得非常困难,但您所做的大部分事情都可以理解。

不,不创建更多全局变量的主要原因是全局命名空间已经非常拥挤,因此创建更多全局变量会使您面临与您可能想要包含的其他脚本发生冲突的风险。全局命名空间在浏览器上特别拥挤,因为浏览器会将各种东西转储到其中,包括每个具有 的元素id的属性(属性名称是id,值是元素,在大多数浏览器上)。

最佳做法是根本不公开任何全局变量。如果你必须有全局变量,那么就只有一个,它是一个你可以放置任何你需要的东西的对象。

于 2013-08-23T11:08:30.887 回答