在全球范围内公开wep应用程序功能-是或否
Exposing wep app functions in the global - aye or nay?
正如您所知,web应用程序通常使用JavaScript将函数附加到DOM元素,以便用户可以与应用程序交互。
然而,我感到惊讶的是,一些web应用程序在全局空间中公开了这些功能,这样我就可以在浏览器控制台中执行它们。这被认为是一种容易受伤的不良做法吗?
例如,通过使用这些公开的函数,我可能能够创建一个脚本并在控制台中运行它,以做一些意想不到的创造性事情。
出于这个原因,我是否应该尽可能地在控制台中隐藏对web应用程序的访问?我显然应该这样做,但我可能错了,因为我对网络开发还很陌生。
我认为这主要是一个基于意见的问题,可能不太适合SO的格式。但我想回答,所以我会用CW回答。
避免创建全局变量的主要原因不是代码的安全或隐私。您的客户端JavaScript代码是公共知识。任何想知道你的代码是什么的人都可以通过下载你的脚本并查看它们来找到答案。即使你混淆了你的脚本,也有一些好的非混淆器可以帮助它们重新可读。谷歌的闭包编译器,特别是高级设置,让变得非常困难,但你所做的大部分都是可以理解的。
不,不创建更多全局的主要原因是全局命名空间已经非常拥挤,因此创建更多全局会使您面临与您可能想要包含的其他脚本之间冲突的风险。全局命名空间在浏览器上特别拥挤,因为浏览器会向其中转储各种内容,包括每个具有id
的元素的属性(在大多数浏览器上,属性名称是id
,值是元素)。
最佳做法是完全不公开任何全局变量。如果有全局变量,那么只需要一个,这是一个可以放置任何需要的对象。
相关文章:
- 如何使用onDeviceReady设置AngularJS应用程序并初始化Cordova的功能
- angular应用程序中的浏览器功能检测:使用服务、指令、控制器
- 节点应用程序无法识别功能
- 地理位置不适用于苹果移动网络应用程序功能
- 我无法在Meteor应用程序中使用聊天功能
- 如何在启用ES6功能的情况下运行Node.js应用程序
- 谷歌应用程序脚本搜索UI下一个和上一个功能
- 如何限制Facebook应用程序中的投票功能,每天一次
- 是否有任何twitter功能用于登录应用程序
- 我想构建一个代码,在谷歌应用程序脚本中检查我在Gmail中导入的邮件,我该如何找到这个功能
- 使用 firebase 获取$add angular 应用程序不是一个功能
- 有没有办法在终止时触发快速应用程序中的功能
- AngularJS - 这个演示应用程序中的功能触发器在哪里
- 设置超时功能,具有钢琴应用程序的动态持续时间
- 煎茶触摸 2 应用程序 - 功能要求
- 节点应用程序.js如何使用其推荐的功能
- AngularJS - 做应用程序将提交和删除功能放入工厂
- 分享FB.ui功能如何捕捉关闭事件电话差距应用程序
- 应用程序关闭前的离子运行功能
- 角度单页应用程序,videoJS就绪功能仅在页面加载时触发