"execute app as me" 部署设置安全吗?
Is "execute app as me" deployment setting secure?
我目前正在创建一个简单的脚本,它本质上只是一个表单,人们可以填写该表单并上传几个文件。
当我单击 Deploy as a Web App
时,其中一个表单项询问“将应用程序执行为”。其中一个选项是:Me (example@gmail.com)
这样安全吗?
这是否意味着对脚本有 link 的任何人实际上都会登录到我的帐户?
这样做有安全风险吗?
如果其他人有权修改您的脚本,那么是的,他可以重新发布可以访问您之前授权的任何内容的应用程序,但不会有新的授权。例如,如果您仅使用 SpreadsheetApp 作为您的第一个代码并授权它,有权修改您已发布的此脚本的人可以打开您的所有电子表格并删除它们,但无法触及文档。
拥有已发布应用程序的人 URL 将拥有 none 个,它只会 运行 脚本 you/shared 脚本编写者发布。
我经常使用 "Me"/"Anyone Even Anonymous",发布了数十个应用程序,从未出现过任何问题。
最重要的问题之一是,谁有权访问 Apps 脚本 文件。文件共享设置的设置与 Web 应用程序部署设置完全不同。您可以将 Apps 脚本文件 SHARED 设置为 不与任何人共享 ,并且 still让任何人都能够访问网络应用程序。因此,访问 web app 和访问 file 是两件不同的事情。这是理解的关键点。
以 我 的方式执行应用程序本身并不是不安全的。它不会将某人登录到您的帐户。 如果 您以某种方式配置了您的应用程序以授予对您帐户的广泛访问权限,您可以这样做,这显然是一个潜在的安全漏洞。您应该在更受限制的 appsscript.json 清单文件中手动设置范围。例如,如果 Web 应用程序发送电子邮件或访问您的 Google 驱动器,则限制范围到您的 Gmail 和驱动器。您可以将电子邮件范围限制为只能发送电子邮件,并将驱动器范围限制为只能访问脚本创建的文件和文件夹,或者用户使用 Google 文件选择器选择的文件和文件夹。您可以限制对当前电子表格的访问,而不是对所有电子表格的访问。
是否存在潜在的安全漏洞?是的。但是 any 网络应用程序没有任何安全漏洞。所以,这实际上取决于您使用的做法。
不要 use/store settings/parameters 在客户端 HTML,这会直接导致服务器功能执行您不希望任何人能够执行的操作。
您的应用的安全程度取决于一些简单的做法。
不要在 HTML 中存储可能导致安全漏洞的设置或信息。密码就是一个明显的例子。不要将文件名放在 HTML 代码中。不要在对服务器的客户端调用中传递设置或参数,这些设置或参数显然是直接 link 到对您的帐户具有广泛访问权限的服务器功能。
您可以在服务器端函数名称的末尾放置一个下划线,这样用户就无法知道您的服务器函数的名称。
https://developers.google.com/apps-script/guides/html/communication#private_functions
有一个主要的服务器函数,然后调用一个私有函数,该函数又分支到其他函数。所以用户永远不会知道最终完成所有实际工作的函数的名称。
我目前正在创建一个简单的脚本,它本质上只是一个表单,人们可以填写该表单并上传几个文件。
当我单击 Deploy as a Web App
时,其中一个表单项询问“将应用程序执行为”。其中一个选项是:Me (example@gmail.com)
这样安全吗?
这是否意味着对脚本有 link 的任何人实际上都会登录到我的帐户?
这样做有安全风险吗?
如果其他人有权修改您的脚本,那么是的,他可以重新发布可以访问您之前授权的任何内容的应用程序,但不会有新的授权。例如,如果您仅使用 SpreadsheetApp 作为您的第一个代码并授权它,有权修改您已发布的此脚本的人可以打开您的所有电子表格并删除它们,但无法触及文档。
拥有已发布应用程序的人 URL 将拥有 none 个,它只会 运行 脚本 you/shared 脚本编写者发布。
我经常使用 "Me"/"Anyone Even Anonymous",发布了数十个应用程序,从未出现过任何问题。
最重要的问题之一是,谁有权访问 Apps 脚本 文件。文件共享设置的设置与 Web 应用程序部署设置完全不同。您可以将 Apps 脚本文件 SHARED 设置为 不与任何人共享 ,并且 still让任何人都能够访问网络应用程序。因此,访问 web app 和访问 file 是两件不同的事情。这是理解的关键点。
以 我 的方式执行应用程序本身并不是不安全的。它不会将某人登录到您的帐户。 如果 您以某种方式配置了您的应用程序以授予对您帐户的广泛访问权限,您可以这样做,这显然是一个潜在的安全漏洞。您应该在更受限制的 appsscript.json 清单文件中手动设置范围。例如,如果 Web 应用程序发送电子邮件或访问您的 Google 驱动器,则限制范围到您的 Gmail 和驱动器。您可以将电子邮件范围限制为只能发送电子邮件,并将驱动器范围限制为只能访问脚本创建的文件和文件夹,或者用户使用 Google 文件选择器选择的文件和文件夹。您可以限制对当前电子表格的访问,而不是对所有电子表格的访问。
是否存在潜在的安全漏洞?是的。但是 any 网络应用程序没有任何安全漏洞。所以,这实际上取决于您使用的做法。
不要 use/store settings/parameters 在客户端 HTML,这会直接导致服务器功能执行您不希望任何人能够执行的操作。
您的应用的安全程度取决于一些简单的做法。
不要在 HTML 中存储可能导致安全漏洞的设置或信息。密码就是一个明显的例子。不要将文件名放在 HTML 代码中。不要在对服务器的客户端调用中传递设置或参数,这些设置或参数显然是直接 link 到对您的帐户具有广泛访问权限的服务器功能。
您可以在服务器端函数名称的末尾放置一个下划线,这样用户就无法知道您的服务器函数的名称。
https://developers.google.com/apps-script/guides/html/communication#private_functions
有一个主要的服务器函数,然后调用一个私有函数,该函数又分支到其他函数。所以用户永远不会知道最终完成所有实际工作的函数的名称。