web-dev-qa-db-ja.com

Firebaseデータの変更を制限する方法は?

開発者がクライアント側のコードに集中できるように、Firebaseはデータベースバックエンドを提供します。

だから誰かが私のファイアベースuri(たとえば、https://firebaseinstance.firebaseio.com)を取得したら、それを開発しますローカル

次に、Firebaseインスタンスから別のアプリを作成し、サインアップして認証し、Firebaseアプリのすべてのデータを読み取ることができますか?

73
rattanak

この議論についてお二人に感謝します。ただし、詳細を追加したかった。

@フランク・ファン・パフェレン、

フィッシング攻撃について言及しました。実際にそれを保護する方法があります。

GoogleAPIs API Managerコンソールにログインする場合、アプリがリクエストを受け入れるHTTPリファラーをロックダウンするオプションがあります。

  1. 訪問 https://console.developers.google.com/apis
  2. Firebaseプロジェクトに移動します
  3. 資格情報に移動
  4. [APIキー]で、Firebaseプロジェクトに関連付けられているブラウザキーを選択します(Firebaseアプリの初期化に使用するAPIキーと同じキーが必要です)。
  5. [これらのHTTPリファラー(Webサイト)からの要求を受け入れる]で、単にアプリのURLを追加します。

これにより、ホワイトリストに登録されたドメインのみがアプリを使用できるようになります。

これは、firebaseの起動チェックリストにも記載されています。 https://firebase.google.com/support/guides/launch-checklist

おそらく、Firebaseのドキュメントでは、これをより見やすくしたり、デフォルトでドメインを自動的にロックダウンしたり、ユーザーにアクセスを許可したりする必要がありますか?

繰り返しますが、どうもありがとう!

79
prufrofro

誰かがあなたのURLを知っているという事実は、セキュリティ上のリスクではありません。

例:私の銀行がbankofamerica.comでWebサイトをホストしており、そこでHTTPプロトコルを使用していると言っても問題ありません。私がそのサイトにアクセスするために使用する資格情報も知っていない限り、URLを知っていても役に立たない。

データを保護するには、データベースを次の方法で保護する必要があります。

  • すべてのデータが目的の構造に準拠していることを確認する検証ルール
  • 許可されたユーザーのみがデータの各ビットを読み取りおよび変更できるようにするための許可ルール

これはすべて Firebaseのセキュリティとルールに関するドキュメント で説明されていますが、これを強くお勧めします。

これらのセキュリティルールが適切に設定されている場合、他の誰かのアプリがデータベース内のデータにアクセスできる唯一の方法は、アプリケーションの機能をコピーし、ユーザーにtheirアプリの代わりに、データベースにサインイン/読み書きします;本質的にフィッシング攻撃。その場合、データベースにセキュリティの問題はありませんが、おそらくいくつかの当局が関与する時間です。

35

ドメイン名が適用されないモバイルアプリの認証ホワイトリストに関して、Firebaseは

1)SHA1 fingerprint forAndroidアプリおよび

2)App Store ID and Bundle ID and Team ID (if necessary) for youriOSアプリ

firebaseコンソールで設定する必要があります。

この保護により、検証は誰かが有効なAPIキー、認証ドメインなどを持っているかどうかだけでなく、承認済みアプリとdomain name/HTTP referrer in case ofWeb

つまり、これらのAPIキーと他の接続パラメーターが他のユーザーに公開されているかどうかを心配する必要はありません。

詳細については、 https://firebase.google.com/support/guides/launch-checklist

2
Anand