Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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
Google apps script 应用程序脚本专用函数_Google Apps Script - Fatal编程技术网

Google apps script 应用程序脚本专用函数

Google apps script 应用程序脚本专用函数,google-apps-script,Google Apps Script,在GoogleApps脚本文档中,有一个关于服务器端私有函数的页面。这应该可以解释,如果没有专用功能,服务器代码可以从用户浏览器中看到。 有人能解释一下你是如何在浏览器中看到这样的服务器端功能的吗? 谢谢 请参阅:服务器代码在用户浏览器上永远不可见,只有函数名。私有函数隐藏了这些名称,但更重要的是,它们取消了前端直接调用这些名称的功能 换句话说,私有函数允许您定义后端入口点,防止恶意用户绕过您可能进行的某些检查,直接调用“内部”函数 为了展示查看名称和调用任何非私有后端函数是多么容易,我举了这个

在GoogleApps脚本文档中,有一个关于服务器端私有函数的页面。这应该可以解释,如果没有专用功能,服务器代码可以从用户浏览器中看到。 有人能解释一下你是如何在浏览器中看到这样的服务器端功能的吗? 谢谢


请参阅:

服务器代码在用户浏览器上永远不可见,只有函数名。私有函数隐藏了这些名称,但更重要的是,它们取消了前端直接调用这些名称的功能

换句话说,私有函数允许您定义后端入口点,防止恶意用户绕过您可能进行的某些检查,直接调用“内部”函数

为了展示查看名称和调用任何非私有后端函数是多么容易,我举了这个示例,其中我们检查
google.script.run
对象:

function myFunction(){}
函数另一个函数(){}
函数privateFunction_uz(){}
函数doGet(){
返回HtmlService.createHtmlOutput(
“

”+ “var s=”;对于(google.script.run中的var prop)s+=prop+'
”+ “document.getElementById('output')。innerHTML=s;” ); }
以下是已发布的示例:

及其源代码(同上):

--在评论中提出问题


无法将
doGet
函数设为私有函数,因为其名称是固定/预定义的。但这并不是一个真正的问题,因为这个函数无论如何都应该是一个入口点,因为您希望从用户的浏览器调用它,并且可以相应地进行参数检查等。

服务器代码在用户的浏览器上永远不可见,只有函数名。私有函数隐藏了这些名称,但更重要的是,它们取消了前端直接调用这些名称的功能

换句话说,私有函数允许您定义后端入口点,防止恶意用户绕过您可能进行的某些检查,直接调用“内部”函数

为了展示查看名称和调用任何非私有后端函数是多么容易,我举了这个示例,其中我们检查
google.script.run
对象:

function myFunction(){}
函数另一个函数(){}
函数privateFunction_uz(){}
函数doGet(){
返回HtmlService.createHtmlOutput(
“

”+ “var s=”;对于(google.script.run中的var prop)s+=prop+'
”+ “document.getElementById('output')。innerHTML=s;” ); }
以下是已发布的示例:

及其源代码(同上):

--在评论中提出问题


无法将
doGet
函数设为私有函数,因为其名称是固定/预定义的。但这并不是一个真正的问题,因为这个函数应该是一个入口点,因为您希望从用户的浏览器调用它,并且可以相应地进行参数检查等。

非常感谢Henrique的回答。这是否意味着只能看到服务器端函数的名称,而不能看到它们的内容?是的,没错。但也可以调用(即执行)所有“公共”函数。因此,在执行任何操作(在此类函数中)之前,您应该始终检查您的参数。因此,
doGet
函数也会显示/公开。一定存在与此相关的风险。你不能在它的末尾添加一个
,那么你所能做的就是让
doGet
函数调用一个私有函数,这样它的内部逻辑就不能被客户端使用了,对吧?不是真的@imthenanchoman,目标不是隐藏已经隐藏的代码/逻辑。
\
诀窍是不允许前端直接调用这些函数,基本上是决定允许前端使用哪些入口点来启动操作。我将编辑我的答案,试图澄清这一点。非常感谢Henrique的回答。这是否意味着只能看到服务器端函数的名称,而不能看到它们的内容?是的,没错。但也可以调用(即执行)所有“公共”函数。因此,在执行任何操作(在此类函数中)之前,您应该始终检查您的参数。因此,
doGet
函数也会显示/公开。一定存在与此相关的风险。你不能在它的末尾添加一个
,那么你所能做的就是让
doGet
函数调用一个私有函数,这样它的内部逻辑就不能被客户端使用了,对吧?不是真的@imthenanchoman,目标不是隐藏已经隐藏的代码/逻辑。
\
诀窍是不允许前端直接调用这些函数,基本上是决定允许前端使用哪些入口点来启动操作。我将编辑我的答案,试图澄清这一点。