在实时模型中保密是否安全?

时间:2015-11-13 09:25:46

标签: oauth google-drive-realtime-api

当应用程序将Drive Realtime API与存储在Drive中的用户文件结合使用时,它可以访问与该文件关联的实时协作模型。它已在官方参考资料[1]和之前的StackOverflow [2]答案中记录,当两个不同的应用程序[3]使用具有相同Drive文件的Realtime API时,它们将访问不同协作模型。

我们假设我的服务器端应用程序client_secret,用户的OAuth refresh_token存储在我只能访问的服务器上,并且用户access_token仅在向各种Google API进行直接调用(通过HTTPS)时离开该服务器。考虑我的应用程序使用Drive API的realtime.getrealtime.update方法将一些敏感数据保存在用户的驱动器文件的协作模型中的情况,例如加密密钥或用于第三方服务的长期OAuth refresh_token

即使该应用程序还在同一文件上使用Realtime API,这些敏感数据是否可以避免泄露给其他应用程序?

我认为任何其他应用都不能冒充我的申请,因为他们无法访问我的client_secret,也无法拦截{{1}或者与我的应用相关联的用户refresh_token

加分问题:用户是否可以绕过我的应用程序并获取对此敏感数据的访问权限?

我无法看到用户模仿我的应用程序的方法。用户可以使用我的应用程序的公开access_token并通过正常的OAuth流授予他自己的权限,但无法在不知道的情况下将结果client_id换成有效的code access_token

  1. "模型通过应用程序隔离。如果用户使用两个不同的协作应用程序打开相同的文件,则会创建单独的文档。" Using Collaborative Models with Existing File Types
  2. "当您在实时游乐场中创建文档时,它由实时游乐场应用程序拥有。当您尝试client_secret get功能中的响应时,它会使用特定于try-it的应用,该应用无法看到您创建的实时模型。" Official answer to question "How to work with Realtime get and update api requests?"
  3. 也就是说,当应用程序使用不同的try-it值来获取用户的OAuth凭据时。

1 个答案:

答案 0 :(得分:0)

不同应用程序的实时模型在您描述时是隔离的,但您应该假设模型中的任何内容在理论上都可由ACL上的任何用户读取。

如果用户已经授权您的应用程序,他们理论上可以获取用于发出请求的oauth令牌,因为它需要从他们的计算机连同请求一起发送。

此外,如果您在浏览器中完整地加载了文档,无论您显示哪些部分。