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


92

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

したがって、誰かが私のfirebase uriを取得した場合(たとえばhttps://firebaseinstance.firebaseio.com)、ローカルで開発します

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

回答:


104

@Frank van Puffelen、

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

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

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

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

これについては、Firebase Launch-Checklistのhttps://firebase.google.com/support/guides/launch-checklistでも説明されています。

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


2
Google APIコンソールにアクセスすると、HTTPリファラーをロックダウンするオプションが表示されません。スクリーンショットが役立ちます。thx
rattanak 2016

上記の手順に従ってみましたか?それはあなたをそこに連れて行くはずです。セキュリティ上の理由から、スクリーンショットは使用しません。ブラウザキーを探すのを忘れないでください。幸運を祈ります。
prufrofro 2016

4
ハイブリッドモバイルアプリでfirebaseを使用し、ionicなどのフレームワークを使用する場合、ホワイトリストはどのように機能しますか?助言がありますか?
ダイナナ2016

1
@prufrofroそれはあなたにとってうまく機能していますか?Androidアプリでも同じことを考えていました。なぜFirebaseがセキュリティセクションでそれをカバーしていないのだろうか。
steliosf 2017年

2
@Anandはい。ただし、Firebaseはドキュメントでこれをカバーしていません。デフォルトでは、キーは公開されており、特定のパッケージ名とSHA-1アプリ証明書でのみ使用できるように手動で制限する必要があります。そして、なぜFirebaseがこれについてまったく言及していないのか疑問に思いました。キャッチか何かありますか?
steliosf 2017

38

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

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

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

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

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

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


4
私が探している答えは完全ではありません。別の方法でお聞きします。私はあなたに私のfirebaseにこのURLを与えたと仮定https://tinderclone.firebaseio.com/してhttps://tinderclone.firebaseio.com/profiles.json。それらは実際のFirebaseデータベースです。メールでサインアップフォームとログインフォームを作成して、アプリを開発できますか?私のアプリでは誰でもメールで登録できるので、登録後はすべてのデータを読むことができますか?後で別の質問をします。ありがとう
rattanak 2016

4
これは、データベースをどのように保護するかによって異なります。追加".read": falseするだけで、誰もがデータを見ることができなくなります。あなたはおそらくそれより少し多くを許可したいと思うでしょう、しかしそれはすべてあなたのユースケースに依存します。データの保護については、セキュリティとルールに関するFirebaseのドキュメントで説明されています。
Frank van Puffelen 2016

6

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

1)SHA1 fingerprintのためのAndroidアプリ

2)App Store ID and Bundle ID and Team ID (if necessary)あなたのためのiOSアプリ

これはFirebaseコンソールで設定する必要があります。

検証ではないので、この保護機能では、誰かが有効なAPIキー、認証ドメインなどを持っているだけでなく、ちょうどあれば、それは私たちの認可のアプリケーションから来ているdomain name/HTTP referrer in caseウェブ

そうは言っても、これらのAPIキーや他の接続パラメータが他の人に公開されているかどうかを心配する必要はありません。

詳細については、https://firebase.google.com/support/guides/launch-checklistをご覧ください。


私の無知を許してください、私は暗号化があまり得意ではありませんが、あなたのapkを通してSha1にアクセスできませんか?Sha1もコピーすることはできませんか?これがどのように役立つのかわかりません。そうでなければ証明されてとてもうれしい
です

はい。あなたは確かにapkのsha1を得ることができます。ただし、これは、呼び出しを検証するためにFirebaseにパラメータとして渡すものではありません。これは、Firebaseによってapi-sdkレベルで取得されます(Androidランタイムから信じられます)。そのため、接続を偽造するためのパラメータとしてこれをFirebaseに送信することはできません。
アナンド

SHA1フィンガープリントのみを使用しても、AndroidアプリとFirebaseとの通信を保護することはできません。SHA1自体は簡単に取得およびコピーでき、SDKの代わりにFirebaseAPIを使用して接続を偽造することもできます。最初にアプリを証明し、コードの難読化を使用してキーを非表示にする必要があります。
FEBRYAN ASA PERDANA
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.