Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在全球范围内公开wep应用程序功能-赞成还是反对?_Javascript_Security - Fatal编程技术网

Javascript 在全球范围内公开wep应用程序功能-赞成还是反对?

Javascript 在全球范围内公开wep应用程序功能-赞成还是反对?,javascript,security,Javascript,Security,如您所知,web应用程序通常使用JavaScript将函数附加到DOM元素,以便用户可以与应用程序交互 然而,令我惊讶的是,一些web应用程序在全局空间中公开了这些函数,以便我可以在浏览器控制台中执行它们。这被认为是一种易受攻击的坏习惯吗 例如,通过使用这些公开的函数,我可能能够创建一个脚本并在控制台中运行它,以执行一些预期不会发生的创造性操作 出于这个原因,我是否应该尽可能地在控制台中隐藏对web应用程序的访问?显然我应该这样做,但我可能错了,因为我对web开发还是很陌生。我认为这主要是一个基

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

然而,令我惊讶的是,一些web应用程序在全局空间中公开了这些函数,以便我可以在浏览器控制台中执行它们。这被认为是一种易受攻击的坏习惯吗

例如,通过使用这些公开的函数,我可能能够创建一个脚本并在控制台中运行它,以执行一些预期不会发生的创造性操作


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

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

避免创建globals的主要原因不是代码的安全性或隐私性。您的客户端JavaScript代码是公共知识。任何想知道你的代码是什么的人都可以找到,只需下载你的脚本并查看它们。即使您对脚本进行了模糊处理,也有一些很好的非模糊处理程序可以帮助您使脚本再次可读。谷歌的闭包编译器,特别是高级设置,让这变得非常困难,但你所做的大部分事情都是可以理解的

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


最佳做法是根本不公开任何全局文件。如果你必须有全局函数,那就只有一个,这是一个你可以放任何你需要的东西的对象。

谢谢,所以你是说,从全局函数中是否公开一些函数来判断安全性是不相关的,因为js首先对任何人都是可见的。所以为了防止一些坏用户的攻击,我只需要仔细编写js代码,不要让任何意外的攻击发生。@CookieMonester:差不多。来自客户端浏览器的所有内容都必须视为可疑。