2015-11-13 64 views
0

當應用程序將Drive Realtime API與存儲在Drive中的用戶文件結合使用時,它可以訪問與該文件關聯的實時協作模型。已經在官方參考資料[1]和StackOverflow [2]的以前回答中記錄了當兩個不同的應用程序[3]使用具有相同Drive文件的Realtime API時,他們將訪問不同的協作楷模。將祕密保存在實時模型中是否安全?

讓我們假設我有一個client_secret服務器端應用程序和用戶的OAuth refresh_token存儲,只有我可以訪問的服務器上,而用戶的access_token進行直接調用(通過HTTPS)時只留下該服務器各種Google API。假設在我的應用程序使用的驅動API的realtime.getrealtime.update方法來保留一些敏感數據在用戶的硬盤文件,的合作模式,如加密密鑰或長期的OAuth refresh_token對第三方服務的情況下。

即使該應用程序也在同一文件上使用Realtime API,這種敏感數據是否可以安全地披露給其他應用程序?

我不認爲任何其他應用程序可以模擬我的應用程序,因爲他們不會有機會獲得我的client_secret,不會有機會截獲無論是refresh_token或與相關用戶的access_token我應用程序。

紅利問題:用戶可以繞過我的應用程序並獲得對這些敏感數據的訪問嗎?

我看不到用戶冒充我的應用程序的方式。用戶可以使用我的應用程序的公共client_id並授予自己通過正常的OAuth流的權限,但沒有任何辦法來換取有效access_token產生的code不知道client_secret


  1. 「模型是通過應用程序隔離。如果用戶打開帶有兩個不同的協作應用程序相同的文件,創建單獨的文件。」 Using Collaborative Models with Existing File Types
  2. 「當你創建實時操場上的文檔,它是由實時操場應用程序擁有。當您嘗試然後gettry-it功能的響應,它採用特有的try-it無法看到的應用您創建的實時模型。「 Official answer to question "How to work with Realtime get and update api requests?"
  3. 也就是說,當應用程序使用不同client_id值以獲得用於用戶的OAuth憑據。

回答

0

不同應用程序的實時模型按照您的描述分離,但您應該假設模型中的任何內容在理論上都可以由ACL上的任何用戶讀取。

如果用戶已授權您的應用程序,理論上是可以搶來提出要求,因爲它需要從他們的計算機與請求一起發送OAuth令牌。

此外,如果您曾經在整個瀏覽器中加載可用的文檔,則無論顯示哪個部分。

+0

是的,我知道當使用客戶端實時API在瀏覽器中加載模型時,我的應用程序的OAuth令牌可供用戶使用。 但是,如果我只從我的服務器使用獲取/更新方法(用於導入和導出實時模型),並且不會將OAuth令牌暴露給最終用戶...那麼在這些情況下,用戶永遠無法訪問實時模型,對嗎? – kiwidrew

相關問題