我目前正在创建一个简单的脚本,它本质上只是一个表单,人们可以填写并上传几个文件。
当我单击部署为 Web 应用程序
时,其中一个表单项询问“执行应用程序为”。选项之一是:我 ( [email protected] )
这样安全吗?
这是否意味着拥有该脚本链接的任何人实际上都会登录到我的帐户?
这是否存在安全风险?
最佳答案
最重要的问题之一是谁有权访问 Apps 脚本文件。文件共享设置的设置与 Web 应用程序部署设置完全不同。您可以将 Apps 脚本文件共享设置设置为不与任何人共享,并且仍然让任何人都能够访问网络应用。因此,访问网络应用和访问文件是两件不同的事情。这是需要理解的关键点。
以我的身份执行应用我本质上并不是不安全的。它不会让某人登录您的帐户。 如果您以某种方式配置了您的应用程序以提供对您帐户的广泛访问权限(您可以这样做),这显然是一个潜在的安全漏洞。您应该在 appsscript.json list 文件中手动设置更受限制的范围。例如,如果 Web 应用程序发送电子邮件或访问您的 Google 云端硬盘,则限制范围仅限于您的 Gmail 和云端硬盘。您可以将电子邮件范围限制为只能发送电子邮件,并将云端硬盘范围限制为只能访问脚本创建的文件和文件夹,或者用户使用 Google 文件选择器选择的文件和文件夹。您可以限制仅访问当前电子表格,而不是所有电子表格。
是否存在潜在的安全漏洞?是的。但任何网络应用程序都不会存在任何安全漏洞。因此,这实际上取决于您使用的实践。
不要在客户端 HTML 中使用/存储设置/参数,这会直接导致服务器功能执行您不希望任何人能够执行的操作。
您的应用的安全程度取决于一些简单的做法。
不要在 HTML 中存储可能导致安全漏洞的设置或信息。密码就是一个明显的例子。不要将文件名放在 HTML 代码中。不要将客户端调用中的设置或参数传递给服务器,这些设置或参数显然是到对您的帐户具有广泛访问权限的服务器功能的直接链接。
您可以在服务器端函数名称末尾添加下划线,这样用户就无法知道您的服务器函数的名称。
https://developers.google.com/apps-script/guides/html/communication#private_functions
有一个主服务器函数,然后调用一个私有(private)函数,该函数又分支到其他函数。因此用户永远不会知道最终完成所有实际工作的函数的名称。
关于security - "execute app as me"部署设置安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32277803/