Devo aggiungere google-services.json (da Firebase) al mio repository?


101

Mi sono appena iscritto a Firebase e ho creato un nuovo progetto. Firebase mi ha chiesto il dominio della mia app e una chiave di debug SHA1. Ho inserito questi dettagli e ha generato un file google-services.json da aggiungere nella radice del modulo della mia app.

La mia domanda è: questo file .json dovrebbe essere aggiunto a un repository pubblico (open source). È qualcosa che dovrebbe essere segreto, come una chiave API?

Risposte:


94

Un google-services.jsonfile è, dal documento Firebase :

Firebase gestisce tutte le tue impostazioni e credenziali API tramite un unico file di configurazione.
Il file è denominato google-services.jsonsu Android e GoogleService-Info.plistsu iOS.

Sembra avere senso aggiungerlo a .gitignoree non includerlo in un repo pubblico.
Questo è stato discusso nel numero 26 , con maggiori dettagli su ciò che google-services.jsoncontiene.

Ad esempio googlesamples/google-services, un progetto come questo ce l'ha dentro.gitignore .
Anche se, come commentato da stepheaw , questo thread menziona

Per una libreria o un campione open source non includiamo il file JSON perché l'intenzione è che gli utenti inseriscano il proprio per puntare il codice al proprio backend.
Ecco perché non vedrai i file JSON nella maggior parte dei nostri repository Firebase su GitHub.

Se "l'URL del database, la chiave dell'API Android e il bucket di archiviazione" non sono segreti per te, potresti prendere in considerazione l'aggiunta del file al tuo repository.
Come accennato in " Google-services.json è al sicuro dagli hacker? ", Non è così semplice.

baueric chiede nei commenti :

In quel post dice:

Il file JSON non contiene informazioni super sensibili (come una chiave API del server)

Ma la google-services.jsonvoce ha chiamato api_key.
È una chiave API diversa da " server api key"?

Willie Chalmers III indica " Google-services.json è al sicuro dagli hacker? " E aggiunge:

Sì, quella chiave API non è una chiave API del server che non dovrebbe mai essere pubblica, quindi va bene se la tua google-services.jsonè visibile ad altri.

In ogni caso, dovresti comunque limitare il modo in cui la tua chiave API client può essere utilizzata nella console di Google Cloud.


11
Questo non è effettivamente corretto; un ingegnere di Firebase ha detto che va bene controllare il codice sorgente. La risposta di @ Yaron sta.
Willie Chalmers III

2
@WillieChalmersIII OK. Ho modificato la risposta di conseguenza.
VonC

@WillieChalmersIII In quel post dice "Il file JSON non contiene informazioni super sensibili (come una chiave API del server)" ma google-services.jsonha una voce chiamata api_key. È una chiave API diversa da una "chiave API del server"?
Baueric

1
@baueric Vedi questa risposta per maggiori informazioni. Sì, quella chiave API non è una chiave API del server che non dovrebbe mai essere pubblica, quindi va bene se la tua google-services.jsonè visibile ad altri. In ogni caso, dovresti comunque limitare il modo in cui la tua chiave API client può essere utilizzata nella console di Google Cloud.
Willie Chalmers III,

36

Da questa discussione sembra che tu possa aggiungerlo a un repo pubblico. Il suo contenuto finisce comunque nell'APK ed è probabilmente facile da estrarre.


1
Sono d'accordo e sto lavorando a questo problema in questo momento. C'è un modo per crittografare le chiavi in ​​quel file da qualcuno che decompila l'APK?
stepheaw

13
Sebbene sia assolutamente vero che le chiavi API possono essere facilmente estratte da un apk, la domanda era se google-services.jsonfosse necessario impegnarsi nel controllo del codice sorgente in un repository pubblico open source . E nella stragrande maggioranza dei casi la risposta è decisamente NO , a meno che il proprietario del repo non desideri che il mondo intero utilizzi la quota API dell'account Google per impostazione predefinita. La risposta di @ VonC resta.
friederbluemle

2
hitraj47 ha chiesto di aggiungerlo a un repository pubblico . Quella discussione non menziona i repository pubblici e sembra che stiano discutendo un repository privato.
Eugene
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.