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.