2016-12-11 70 views
0

Firebase文檔建議obtaining a downloadable url(例如,用於以html格式流式傳輸視頻<video>標記)由getDownloadURL()在任何存儲引用上完成。因此,您可以設置將通過SDK應用於客戶端請求的安全規則。強制驗證Firebase存儲可下載的網址

但是,收到的可下載URL似乎公開可供任何客戶端/設備使用,無需認證。

是否有任何方法來強制執行此類用例的安全授權?我注意到您可以在控制檯中手動撤銷公共URL,但這不是一個可擴展的解決方案,也不安全。

回答

1

有兩種方法可以從火力地堡存儲下載文件:

  • gs://bucket/object
  • https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<UUID>

前者是一個內部基準,並可以用於上傳和通過下載文件我們的SDK。這些受Firebase身份驗證和Firebase存儲安全規則的保護。它旨在供應用程序的用戶在應用程序中使用。

後者是外部參考,只能用於下載已共享的文件,通常在應用程序外部。由於共享的用戶不在應用程序中,因此他們無法進行身份驗證,因此授權不那麼有趣。

我們提供的授權「他們還有很長的不可猜測令牌」,這意味着人授權共享的文件,他們給了他們的權限。這就是俗稱的「公,不可猜測URL」或「標識的URL」由於密碼簽名是常常用來傳達某些權利要求(如URL的有效時間,什麼樣的操作是有效的,等等)。

我們相信,有在做,只能通過「內部」的應用程序的用戶使用,但我會開聽到您的使用情況下,如果你不同意「外部」表示沒有什麼意義。

+0

謝謝。我的用例很簡單 - 我想要一個視頻點播服務,這意味着只有在進行Firebase身份驗證時,我纔會提供視頻網址。因此,任何經過身份驗證的用戶都可以直接從源複製視頻網址,並將其傳遞。手動撤銷令牌並不是一個可擴展的解決方案。 – tomper

+0

是的,只是使用第一種方法,基本上就是這樣。 –

+0

只需添加@MikeMcDonald所說的話。谷歌顯然相信這個系統,因爲這是他們的文件共享系統的多少工作。 Google Phots就是這樣一個例子。這裏有一個有趣的文章,解釋這一點:[鏈接](https://www.theverge.com/2015/6/23/8830977/google-photos-security-public-url-privacy-protected)。 –