Opierając się na odpowiedziach prufrofro i Franka van Puffelena here, stworzyłem to rozwiązanie, które nie zapobiega skrobaniu, ale może utrudnić korzystanie z klucza API.
Ostrzeżenie: Aby uzyskać dostęp do danych, nawet z tej metody, można na przykład po prostu otworzyć konsolę JS w Chrome i wpisz:
firebase.database().ref("/get/all/the/data").once("value", function (data) {
console.log(data.val());
});
tylko zasad bezpieczeństwa bazy danych mogą chronić swoje dane.
Niemniej jednak ograniczone mój produkcja API użycie klucza do mojej domeny tak:
- https://console.developers.google.com/apis
- Wybierz projekt Firebase
- Poświadczenia
- Pod klucze API, wybrać Klawisz przeglądarki. Powinno to wyglądać tak: „klucz Browser (Automatycznie utworzone przez Google Service)”
- W „Zebrane wnioski z tych kierujących HTTP (strony internetowej)” dodaj adres URL aplikacji (exemple:
projectname.firebaseapp.com/*
)
Teraz aplikacja działa tylko na tej nazwie domeny. Stworzyłem więc kolejny klucz API, który będzie prywatny dla rozwoju lokalnego hosta.
- Kliknij Utwórz poświadczenia> Klucz API
ten nie jest ograniczony, więc upewnij się zachować prywatne.
Używam Webpacka do budowania mojej aplikacji produkcyjnej. Aby upewnić się, że nie publikuję omyłkowo nowego, nieskrępowanego klucza API, umieszczam go wewnątrz mojego telefonu index.html
, tak jak normalnie robiłbyś to z kluczem API.Następnie, w moim pliku webpack.production.config.js
, wymienić klucz za każdym razem index.html
jest kopiowany do kompilacji produkcyjnej, tak:
plugins: [
new CopyWebpackPlugin([
{
transform: function(content, path) {
return content.toString().replace("###dev-key###", "###public-key###");
},
from: './index.html'
}
])
]
Domyślnie, jak wspomniano Emmanuel Campos Firebase only whitelists localhost
and your Firebase hosting domain.
Czyli oznacza to, że inne osoby będą w stanie uzyskać dostęp do wszystkich danych w mojej bazie danych bazy ogniowej? –
Zobacz http://stackoverflow.com/questions/35418143/how-to-restrict-firebase-data-modification –
@EmmanuelCampos Odpowiedź brzmi Tak i Nie. Tak, jeśli pozwolisz lub chcesz, aby inne osoby miały dostęp do wszystkich danych w baza danych. I Nie, jeśli ich nie chcesz. Baza danych Firebase zawiera reguły, reguły, które kontrolujesz – Rexford