2016-09-16 23 views

答えて

1

あなたはFirebaseストレージにデータをアップロードすると、あなたがそのデータを取得する2つの「リンク」で提供されます。

  1. プライベートリンクを。このリンクは、認証されたユーザ/デバイスによって内部的にアクセスできるようになります。
  2. 公開リンク。このリンクは技術的に誰でも のリンクで読むことができますが、リンクは非常に と推測されます。最後のトークンは、推測するのが非常に難しいでしょう。 このトークンを削除してリンクに移動すると、 Firebase Serverがアクセスをブロックすることがわかります。

世界が見るために「そこに」リンクが残っていて不快な場合は、リンクを取り消すことができます。

下の画像を参照してください。私はスクリーンショットを撮ってプライベートの 'gc //'リンクと公開の 'http'リンクを表示しました。その小さな「取り消し」オプションを見ますか?ユーザーには見せたくない特に機密性の高いデータがある場合は、これを使用できます。

enter image description here

更新: これを書いている時点で何のAPI呼び出しが存在しないか、そのパブリックリンクを取り除くためにFirebaseフラグ/機能で構築しているようです。唯一の方法は、一度に1つずつ手動でFBコンソールから取り消すことです。 (ref:https://groups.google.com/forum/#!topic/firebase-talk/aw86jf8b7PY)Mike Mcdonaldはまた、一度ユーザーがイメージを見たら、とにかくダウンロードしたり保存したりする可能性が常にあるため、URLの取り消しには実際のセキュリティの影響があるかどうかは関係ありません。

もう一つの選択肢は、イメージをサーバーにプルし、一時的な(?)リンクを使用して画像を提供し、そのパブリックURLを目だけに保つことです。これにより、サーバー側の作業が増えますが、セキュリティが絶対に必要な場合は、探索したいオプションになる可能性があります。

これが役に立ちます。

+0

ありがとう、ライアン。 getDownloadURL()関数は私に公開URLを与え、で使用するのは非常に簡単ですが、公開URLだから誰もタグから取得してログイン保護を回避できます。今、私の質問は、私のWebアプリケーションのプライベートURLを使用する方法ですか?どんな例ですか? –

+0

このコメントは、私がウェブアプリケーションの最後の部分を見なかったので再編集した後に編集しました。これらのイメージは、あなたのwebapp(Firebase Authとは別に)によってすでに認証されているユーザにのみ表示されますか?また、あなたが私の質問に気にしないなら、どのタイプのスタック/フレームワークをあなたのwebappに使用していますか? – Ryan

+0

私はFirebase AuthとAngular 2をWebアプリケーションに使用しています。認証されたユーザー間でのみ画像を共有したいと思っています。モバイルクライアントはIonic 2を使用しています。これはアプリからイメージURLを取得するのが簡単ではないため、問題ありません。 :) また、ダウンロードURLを取り消す代わりに、手動で取り消すことができるAPIがあるかどうかを知りたい場合は、 –

0

によりfirebaseコンソールからトークンに、誰もがこのリンクにアクセスできます。トークンは、リンクから削除された場合は
https://firebasestorage.googleapis.com/v0/b/fb-functions-xxx.appspot.com/o/assets%2Fhello.html?alt=media&token=xxxxxx-95d5-41cd-b827-329bbe6269fb

を、firebaseストレージルールが適用されます。
https://firebasestorage.googleapis.com/v0/b/fb-functions-xxx.appspot.com/o/assets%2Fhello.html?alt=media

関連する問題