Google Apps脚本中的PropertiesService是否安全?

时间:2018-02-14 08:42:33

标签: google-apps-script

在谷歌应用程序脚本项目中,我需要存储一些敏感用户的数据以供以后执行。假设在第一次执行期间,用户提供了一些数据,第二次脚本使用该数据。

有很多方法可以实现这一点,例如保存在一些谷歌文档或保存它驱动器。但是,我认为最干净的方式是将其存储在PropertiesService.getUserProperties()

它完美无缺,但我不确定这种方法是否足够安全。目前尚不清楚这些数据是如何存储的。我找不到任何技术说明。我浏览了cookie,看起来它没有使用cookies。也许,它存储在G服务器上的某个地方,但是其他一些脚本是否能够读取我放在UserProperties中的数据?此外,还不清楚设置属性的寿命是什么,它们是否可以永久驻留在那里,直到一些脚本删除它?

更新

在关于属性服务的章节中的Going GAS书中,我找到了一些有趣的笔记

  

首次启动Apps脚本时,特定用户可以访问UserProperties,而不是绑定到特定脚本。   如今,每个脚本都有自己的UserProperties类,只能从特定的脚本中访问   用户。

这意味着 user1 下的 script1 存储在UserProperties中的任何数据都无法在 user1 下的 user1 < / em>的。我实际上进行了快速测试以确认。

另一个注意事项

  

“应用脚本属性”服务位于云端,因此不受任何限制   特定的机器,环境或操作系统。

这部分证实了我的假设,即属性存储在运行* .gs脚本的G服务器上。

考虑到这一点,我会说使用“属性服务”在某种程度上是可靠和安全的。

很高兴听到有关此事的任何评论。

1 个答案:

答案 0 :(得分:1)

取决于您如何确定范围。

  • 它可以限定为一个脚本:

    var scriptProperties = PropertiesService.getScriptProperties();
    scriptProperties.setProperty('SERVER_URL', 'http://www.example.com/');
    
  • 脚本的一个用户

    var userProperties = PropertiesService.getUserProperties();
    userProperties.setProperty('DISPLAY_UNITS', 'metric');
    
  • 或一个文件

    var documentProperties = PropertiesService.getDocumentProperties();
    documentProperties.setProperty('SOURCE_DATA_ID', '1234567890abcdefghijklmnopqrstuvwxyz');
    

这是访问表from the docs

+--------------------+---------------------------------------------------------------------------------------------------+-------------------------------------------------------+-------------------------------------------------------------------+
|                    |                                         Script Properties                                         |                    User Properties                    |                        Document Properties                        |
+--------------------+---------------------------------------------------------------------------------------------------+-------------------------------------------------------+-------------------------------------------------------------------+
| Method to access   | getScriptProperties()                                                                             | getUserProperties()                                   | getDocumentProperties()                                           |
| Data shared among  | All users of a script, add-on, or web app                                                         | The current user of a script, add-on, or web app      | All users of an add-on in the open document                       |
| Typically used for | App-wide configuration data, like the username and password for the developer's external database | User-specific settings, like metric or imperial units | Document-specific data, like the source URL for an embedded chart |
+--------------------+---------------------------------------------------------------------------------------------------+-------------------------------------------------------+-------------------------------------------------------------------+

没有明确的迹象表明这些物业的寿命是多少或它们存储的确切位置,但是从quotas doc我们知道:

  • 商店绑定到消费者帐户
  • 每个值最多可存储9kb,每个属性存储最多可存储500kb。 (如果你付钱,你可以延长这些限制)
  • 所有限制均可随时消除,减少或更改,恕不另行通知。