ここでプルフロフロとフランクファンプフェレンの回答を基に、スクレイピングを妨げないこの設定をまとめましたが、APIキーの使用が少し難しくなる可能性があります。
警告:この方法でもデータを取得するには、たとえば、ChromeでJSコンソールを開いて次のように入力します。
firebase.database().ref("/get/all/the/data").once("value", function (data) {
console.log(data.val());
});
データを保護できるのは、データベースセキュリティルールだけです。
それにもかかわらず、私は次のように私のプロダクションAPIキーの使用を私のドメイン名に制限しました:
- https://console.developers.google.com/apis
- Firebaseプロジェクトを選択します
- 資格情報
- APIキーの下で、ブラウザーキーを選択します。これは次のようになります。「ブラウザキー(Googleサービスによって自動作成)」
- 「では、これらのHTTPリファラ(ウェブサイト)からの要求を受け入れる」、あなたのアプリ(exemple:のURLを追加します
projectname.firebaseapp.com/*
)
これで、アプリはこの特定のドメイン名でのみ機能します。そこで、localhost開発用にプライベートになる別のAPIキーを作成しました。
- [認証情報を作成]> [APIキー]をクリックします
Emmanuel Camposが述べたように、デフォルトでは、Firebaseはホワイトリストlocalhost
とFirebaseホスティングドメインのみをリストします。
間違ったAPIキーを誤って公開しないようにするために、次のいずれかの方法を使用して、制限の厳しいものを自動的に本番環境で使用します。
Create-React-Appのセットアップ
で/env.development
:
REACT_APP_API_KEY=###dev-key###
で/env.production
:
REACT_APP_API_KEY=###public-key###
に /src/index.js
const firebaseConfig = {
apiKey: process.env.REACT_APP_API_KEY,
// ...
};
以前のWebpackのセットアップ:
私はWebpackを使用して本番アプリをビルドし、通常どおりに開発APIキーを内部に配置index.html
します。次に、webpack.production.config.js
ファイル内で、index.html
本番ビルドにコピーされるたびにキーを置き換えます。
plugins: [
new CopyWebpackPlugin([
{
transform: function(content, path) {
return content.toString().replace("###dev-key###", "###public-key###");
},
from: './index.html'
}
])
]