在全球范围内公开wep应用程序功能-是或否

Exposing wep app functions in the global - aye or nay?

本文关键字:功能 应用程序 wep 范围内      更新时间:2023-09-26

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

然而,我感到惊讶的是,一些web应用程序在全局空间中公开了这些功能,这样我就可以在浏览器控制台中执行它们。这被认为是一种容易受伤的不良做法吗?

例如,通过使用这些公开的函数,我可能能够创建一个脚本并在控制台中运行它,以做一些意想不到的创造性事情。

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

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

避免创建全局变量的主要原因不是代码的安全或隐私。您的客户端JavaScript代码是公共知识。任何想知道你的代码是什么的人都可以通过下载你的脚本并查看它们来找到答案。即使你混淆了你的脚本,也有一些好的非混淆器可以帮助它们重新可读。谷歌的闭包编译器,特别是高级设置,让变得非常困难,但你所做的大部分都是可以理解的。

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

最佳做法是完全不公开任何全局变量。如果全局变量,那么只需要一个,这是一个可以放置任何需要的对象。