1. ホーム
  2. javascript

[解決済み] FirebaseのapiKeyを公開しても大丈夫ですか?

2022-03-16 17:31:48

質問

その Firebase Web-Appガイド には、与えられた apiKey をHtmlに記述して、Firebaseを初期化する。

// TODO: Replace with your project's customized code snippet
<script src="https://www.gstatic.com/firebasejs/3.0.2/firebase.js"></script>
<script>
  // Initialize Firebase
  var config = {
    apiKey: '<your-api-key>',
    authDomain: '<your-auth-domain>',
    databaseURL: '<your-database-url>',
    storageBucket: '<your-storage-bucket>'
  };
  firebase.initializeApp(config);
</script>

そうすることで apiKey は、すべての訪問者に公開されます。

とは何ですか? その鍵の目的 で、それは本当に 公開されることを意味する ?

解決方法は?

その apiKey は、Google サーバ上の Firebase プロジェクトを識別するだけです。誰かがこれを知っていても、セキュリティ上のリスクはありません。むしろ、Firebaseプロジェクトと対話するためには必要なことです。この同じ設定データは、Firebaseをバックエンドとして使用するすべてのiOS/Androidアプリにも含まれています。

その意味では、同じスニペットにある、プロジェクトに関連するバックエンドデータベースを特定するデータベースURLと非常によく似ています。 https://<app-id>.firebaseio.com . なぜこれがセキュリティリスクでないのかについては、この質問を参照してください。 Firebaseのデータ修正を制限するには? Firebase のサーバサイドセキュリティルールを使用して、許可されたユーザのみがバックエンドサービスにアクセスできるようにすることも含まれます。

Firebase のバックエンドサービスに対するすべてのデータアクセスが許可されていることを確認する方法については Firebaseセキュリティルール . これらのルールは、ファイルストレージやデータベースへのアクセスを制御し、Firebaseサーバで実施されます。ですから、それが あなたの のコード、またはあなたの設定データを使用する他の人のコードは、セキュリティルールで許可されたことしかできません。

Firebaseがこれらの値を何に使うか、またどの値を使うかについては、別の説明もあります。 できること の Firebase ドキュメントを参照してください。 APIキーの使用と管理 .


この設定データをバージョンコントロールにコミットするリスクを減らしたい場合は SDKによるFirebaseホスティングの自動設定 . キーは同じフォーマットでブラウザに表示されますが、コードにハードコードされることはもうありません。


更新情報 (2021年5月)です。という新機能のおかげで Firebaseアプリチェック Firebaseプロジェクトのバックエンドサービスへのアクセスを、そのプロジェクトに登録されているiOS、Android、Webアプリからのアクセスのみに制限することが可能になりました。

通常、上記のユーザー認証に基づくセキュリティと組み合わせて、以下のような悪用されるユーザーに対する別の盾を持つことが望ましいでしょう。 する を使用します。

App Checkとセキュリティ・ルールを組み合わせることで、不正使用に対する幅広い保護と、各ユーザーがアクセスできるデータの細かい制御の両方が可能になります。