Devo adicionar google-services.json (do Firebase) ao meu repositório?


93

Acabei de me inscrever no Firebase e criei um novo projeto. O Firebase me pediu o domínio do meu aplicativo e uma chave de depuração SHA1. Inseri esses detalhes e ele gerou um arquivo google-services.json para eu adicionar na raiz do módulo do meu app.

Minha pergunta é: este arquivo .json deve ser adicionado a um repositório público (código aberto). É algo que deveria ser secreto, como uma chave de API?

Respostas:


90

Um google-services.jsonarquivo é, do documento do Firebase :

O Firebase gerencia todas as configurações e credenciais da API por meio de um único arquivo de configuração.
O arquivo é nomeado google-services.jsonno Android e GoogleService-Info.plistno iOS.

Parece fazer sentido adicioná-lo a um .gitignoree não incluí-lo em um repo público.
Isso foi discutido na edição 26 , com mais detalhes sobre o que google-services.jsoncontém.

Um projeto como googlesamples/google-serviceso tem em seu,.gitignore por exemplo.
Embora, como comentado por stepheaw , este tópico mencione

Para uma biblioteca ou amostra de código aberto, não incluímos o arquivo JSON porque a intenção é que os usuários insiram o seu para apontar o código para seu próprio back-end.
É por isso que você não verá arquivos JSON na maioria de nossos repositórios Firebase no GitHub.

Se o "URL do banco de dados, chave de API do Android e intervalo de armazenamento" não forem secretos para você, considere adicionar o arquivo ao seu repo.
Conforme mencionado em " O google-services.json está protegido contra hackers? ", Isso não é tão simples assim.

baueric pergunta nos comentários :

Nessa postagem, ele diz:

O arquivo JSON não contém nenhuma informação supersensível (como uma chave de API do servidor)

Mas o google-services.jsontem uma entrada chamada api_key.
Essa é uma chave de API diferente de " server api key"?

Willie Chalmers III aponta para " Is google-services.json seguro contra hackers? " E acrescenta:

Sim, essa chave de API não é uma chave de API do servidor que nunca deve ser pública, então está tudo bem se você google-services.jsonestiver visível para outras pessoas.

Em qualquer caso, você ainda deve restringir como sua chave de API do cliente pode ser usada no console do Google Cloud.


10
Isso não é realmente correto; um engenheiro do Firebase disse que não há problema em verificar o controle de origem. A resposta de @Yaron permanece.
— Willie Chalmers III

2
@WillieChalmersIII OK. Eu alterei a resposta em conformidade.
— VonC

@WillieChalmersIII Nesse post ele diz "O arquivo JSON não contém nenhuma informação supersensível (como uma chave de API do servidor)" mas google-services.jsontem uma entrada chamada api_key. É uma chave de API diferente de uma "chave de API de servidor"?
— baueric

1
@baueric Veja esta resposta para mais informações. Sim, essa chave de API não é uma chave de API do servidor que nunca deve ser pública, então está tudo bem se você google-services.jsonestiver visível para outras pessoas. Em qualquer caso, você ainda deve restringir como sua chave de API do cliente pode ser usada no console do Google Cloud.
— Willie Chalmers III

36

A partir dessa discussão, parece que você pode adicioná-lo a um repositório público. Seu conteúdo acaba no APK de qualquer maneira e provavelmente é fácil de extrair.


1
Eu concordo e estou trabalhando nesse problema agora. Existe uma maneira de criptografar as chaves nesse arquivo de alguém descompilar o APK?
— stepheaw

13
Embora seja definitivamente verdade que as chaves de API podem ser facilmente extraídas de um apk, a questão era se google-services.jsondeveria ser comprometido com o controle de origem em um repositório de código aberto público . E na grande maioria dos casos, a resposta é definitivamente NÃO - a menos que o proprietário do repo queira que o mundo inteiro use sua cota de API da conta do Google por padrão. A resposta de @VonC permanece.
— friederbluemle

2
hitraj47 perguntou sobre adicioná-lo a um repositório público . Essa discussão não menciona repositórios públicos, e eles parecem estar discutindo um repositório privado.
— Eugene
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.