security - 授权导入范围后是否可以浏览电子表格?

标签 security google-apps-script google-sheets importrange

我在 Google 云端硬盘上创建了多个电子表格。所以我是所有这些的所有者。

我有一个电子表格(主),它用作主文件,将数据导出到我与顾问团队共享的其他电子表格(事件报告)中。导出的数据使他们能够使用列表作为数据验证等,这有助于主文件分析他们的事件(无需清理数据)。

由于我已在与顾问团队共享的电子表格上批准了主控的导入范围,因此我知道已创建连接。因此,他们可以更改事件报告上的公式,以访问我不希望他们在我的主文件中看到的数据。

对所有要导出/导入的内容使用范围名称或特定工作表会阻止他们浏览所需的内容(他们基本上需要电子表格的 ID 和包含工作表名称或命名范围的范围) 。

但我想知道 Apps 脚本是否允许他们这样做(浏览我的主文件以了解我如何命名我的工作表、范围等),因为如果是这样,则在编辑者使用的电子表格基本上可以让他们使用命名范围或通过非专用于导出的工作表名称导入文件中想要的任何内容,包括敏感或 secret 信息。

最佳答案

But I wanted to know if Apps Script could allow them to do that (browse my MASTER File to know how I named my sheets, ranges, and so on),

在我的简短测试中,应用程序脚本授权/权限似乎与导入范围授权是分开的。因此,如果从属电子表格(导​​入数据的电子表格)上的编辑者无法访问主电子表格,则他/她无法通过 Apps 脚本访问主电子表格上的数据。然而,从站上的编辑器能够通过 importrange 公式访问主站。

来自support ,

Spreadsheets must be explicitly granted permission to pull data from other spreadsheets using IMPORTRANGE. The first time the destination sheet pulls data from a new source sheet, the user will be prompted to grant permission. Once access is granted, any editor on the destination spreadsheet can use IMPORTRANGE to pull from any part of the source spreadsheet. The access remains in effect until the user who granted access is removed from the source.


Using Range Names or a specific sheet for all the things to be exported/imported prevents them from browsing what they want (they basically need the ID of the spreadsheet and a range which includes the name of a sheet or a named range).

本质上,您想使用工作表名称/范围名称作为密码。在我的简短测试中,遇到了以下问题:

  • 暴力破解是有可能的。 SheetName/RangeName 应具有 >30 位的熵,即随机工作表名称/特殊字符/大写/小写字母,且字符数 >8 个。

  • 关于 importrange 的运作方式并没有透露太多。这意味着,Google 将来可以轻松允许应用脚本访问,而您可能不知道。

  • 最后,也是最重要的一点,工作表名称/范围名称是完全可选的。

    The sheet_name component of range_string is optional; by default IMPORTRANGE will import from the given range of the first sheet.

换句话说,任何编辑者都可以不受限制地访问第一张工作表。例如,以下导入是完全有效的:

=IMPORTRANGE("SPREADSHEETURL", "A1:Z")

此外,如果您不小心将主电子表格中的敏感工作表移至左侧,使其成为第一个工作表,则所有编辑者都可以在移动后轻松访问该工作表。为了最大限度地减少这种风险,您可以创建一个电子表格系统:主控>从属1(仅导入一张工作表。没有编辑器)>从属1的从属(1个编辑器;从从属1导入)。在这种情况下,即使slave1工作表名称被猜测,Master工作表也是安全的。

结论:

为了保护任何敏感数据的安全,使用 importrange() 不是一个好主意。此外,对多个工作表使用 importrange 充其量也是不可靠的。出于所有目的,最好完全避免 importrange。虽然比公式有点繁琐,但对于电子表格同步,最好使用 "Standalone"从性能和安全角度来看脚本。

关于security - 授权导入范围后是否可以浏览电子表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57748146/

相关文章:

security - 一次性盐和服务器密码比较

java - 在 Java 中生成 DES key 并通过套接字传递它

google-apps-script - 如何开发具有不同阶段/不同GSuite帐户的Google Apps脚本Web应用程序?

javascript - 电子表格的谷歌脚本 : How to keep value saved for "ever"?

google-sheets - 在 Google 表格中,如何返回空白单元格或根据另一个单元格缺少内容来执行功能?

.net - 如何完全序列化/反序列化 RSAParameters 对象

sql-server - 确定当前正在进行的安全检查 (SQL Server)

google-apps-script - 如何在 Google Apps 脚本中的 Google Analytics Data API 中使用 FilterExpression

google-apps-script - 将谷歌应用程序脚本移动到 v8 文件上传停止从侧边栏工作

javascript - 使用 Google Sheets 将 HTML 编码为 HTML 特殊字符