我的目标是创建一个表格(Google表格),以可读的方式显示来自Firebase数据库的一些数据。
事实是这张表存在安全/隐私危害 - 因为" DB秘密"在脚本中显示。因此,我无法分享此表/脚本。
有没有办法在不编写网络应用的情况下以安全的方式使用Google Apps脚本(使用Google表格)? 也许通过添加某种"登录"机制? 或者限制对某些用户的访问(通过他们的电子邮件标识)?
答案 0 :(得分:1)
您可以移动敏感代码到一个独立脚本和部署它作为一个̶[图书馆]̶[1],然后就可以参考库中你容器结合的脚本和唯一̶y̶o̶u̶'̶l̶l̶暴露是函数签名,而不是其中的代码保持̶“DB秘密”̶安全。
可以甚至添加额外的安全性,并创建一个白名单用户,̶和GATE的代码库中的,使得访问只授予这些上的列表中,因为̶y̶o̶u̶'̶l̶l̶能够检测当前用户经由̶ ̶S̶e̶s̶s̶i̶o̶n̶.̶g̶e̶t̶A̶c̶t̶i̶v̶e̶U̶s̶e̶r̶(̶)̶.̶g̶e̶t̶E̶m̶a̶i̶l̶(̶)̶
̶。
更新1
验证了@Frank van Puffelen的评论,并且他是正确的,因为可以通过直接链接到独立脚本来公开库的代码。为了使用户能够使用他们至少只能访问的库,这允许他们使用直接链接到独立脚本来查看代码。
但这是一个可行的解决方案,您可以将脚本部署为add-on,这将确保您的代码保持私有状态。您的用户必须安装附加组件才能使用您的脚本,但他们无法访问代码。
更新2
我相信库对于你的用例仍然可行,但是你必须以一种全面的方式使用它们。
所以你可以这样做:
创建,而不是一个,但两个库。
公开分享其中一个库,以便您的用户可以访问它。让我们称这个库 LIB_A 。
将任何敏感数据和功能存储在第二个库中;我们称之为 LIB_B 。
LIB_A 参考 LIB_B 。由于 LIB_A 和 LIB_B 都属于同一帐户, LIB_A 可以访问 LIB_B 的内容。但是, LIB_B 的内容不会公开 给您的用户(只要不共享)。
请注意,这种方法并非没有缺点,每当您使用库时,您的应用程序都会受到性能影响,因此您使用的库越多,执行时间就越慢。因此,如果你有时间关键代码,这可能不是最好的方法。