Basandosi sulle risposte di prufrofro e Frank van Puffelen here, ho messo insieme questa soluzione che non impedisce lo scraping, ma può rendere più difficile l'utilizzo della chiave API.
Attenzione: per ottenere i dati, anche con questo metodo, si può per esempio è sufficiente aprire la console di JS in Chrome e tipo:
firebase.database().ref("/get/all/the/data").once("value", function (data) {
console.log(data.val());
});
Solo le norme di sicurezza del database in grado di proteggere i vostri dati.
Tuttavia, ho ristretto la mia produzione API uso chiave del mio nome di dominio come questo:
- https://console.developers.google.com/apis
- Seleziona il progetto Firebase
- Credenziali
- Sotto chiavi API, scegli il tuo Chiave del browser. Esso dovrebbe essere simile a questo: "chiave Browser (auto creato da Google Service)"
- In "accettare le richieste provenienti da queste referrer HTTP (siti web)", aggiungere l'URL della tua app (Esempio:
projectname.firebaseapp.com/*
)
Ora l'applicazione funziona solo con questo nome di dominio. Così ho creato un'altra chiave API che sarà privata per lo sviluppo di localhost.
- Fare clic su Crea credenziali> API Key
Questo non è limitato, quindi assicuratevi di mantenerlo privato.
Uso Webpack per creare la mia app di produzione. Per assicurarmi di non pubblicare per sbaglio questa nuova chiave API senza limitazioni, l'ho inserita nel mio index.html
proprio come faresti normalmente con la tua chiave API.Poi, dentro il mio file webpack.production.config.js
, sostituisce la chiave ogni volta index.html
viene copiato nella costruzione di produzione, in questo modo:
plugins: [
new CopyWebpackPlugin([
{
transform: function(content, path) {
return content.toString().replace("###dev-key###", "###public-key###");
},
from: './index.html'
}
])
]
Per impostazione predefinita, come detto da Emmanuel Campos, Firebase only whitelists localhost
and your Firebase hosting domain.
Quindi significa che altre persone potrebbero accedere a tutti i dati nel database di Firebase? –
Vedere http://stackoverflow.com/questions/35418143/how-to-restrict-firebase-data-modification –
@EmmanuelCampos La risposta è Sì e No. Sì, se si consente o si desidera che le altre persone accedano a tutti i dati in il database. E no, se non vuoi che lo facciano. Il database di Firebase ha regole, regole che controlli – Rexford