javascript - 在全局范围内公开 Web 应用程序功能 - 是或否?

标签 javascript security

<分区>

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

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

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

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

最佳答案

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

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

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

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

关于javascript - 在全局范围内公开 Web 应用程序功能 - 是或否?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18401231/

相关文章:

javascript - 在 Wordpress Genesis Framework 上向下滚动页面时向标题添加颜色

android - Apk 元信息警告

security - 具有 gets() ROP 漏洞的 Windows 控制台应用程序

javascript - 谷歌地图标记 — 设置背景颜色

javascript - 如何在禁用模式下保护按钮?

javascript - 按照 firebase 文档,.update 仍在覆盖

Javascript - 可以删除关联数组的元素

javascript - 使用 eval() 评估学生程序员的代码。安全漏洞?

asp.net - 是否需要对密码输入进行清理?

MongoDB 服务器接受服务器证书作为客户端证书