Czy powinienem dodać plik google-services.json (z Firebase) do mojego repozytorium?

101

Właśnie zarejestrowałem się w Firebase i utworzyłem nowy projekt. Firebase poprosił mnie o podanie domeny aplikacji i klucza debugowania SHA1. Wprowadziłem te szczegóły i wygenerował plik google-services.json, który mam dodać do katalogu głównego modułu mojej aplikacji.

Moje pytanie brzmi, czy ten plik .json powinien zostać dodany do publicznego repozytorium (open source). Czy jest to coś, co powinno być tajne, jak klucz API?

hitraj47
źródło

Odpowiedzi:

94

google-services.jsonPlik jest z doc Firebase :

Firebase zarządza wszystkimi ustawieniami i danymi logowania API za pomocą jednego pliku konfiguracyjnego.
Plik nosi nazwę google-services.jsonw systemie Android i GoogleService-Info.plistiOS.

Wydaje się, że sensowne jest dodanie go do a .gitignorei nieuwzględnianie go w publicznym repozytorium.
Zostało to omówione w numerze 26 , gdzie podano więcej szczegółów na temat tego, co google-services.jsonzawiera.

Na przykład projekt taki jak googlesamples/google-servicesma to w.gitignore sobie.
Chociaż, jak zauważył przez stepheaw , ten wątek nie wspomina

W przypadku biblioteki lub próbki open source nie dołączamy pliku JSON, ponieważ celem jest, aby użytkownicy wstawiali własne, aby wskazać kod na ich własny backend.
Dlatego nie zobaczysz plików JSON w większości naszych repozytoriów Firebase na GitHub.

Jeśli „adres URL bazy danych, klucz API Androida i zasobnik pamięci” nie są dla Ciebie tajne, możesz rozważyć dodanie pliku do repozytorium.
Jak wspomniano w artykule „ Czy google-services.json jest bezpieczne przed hakerami? ”, Nie jest to takie proste.

Baueric pyta w komentarzach :

W tym poście pisze:

Plik JSON nie zawiera żadnych bardzo wrażliwych informacji (takich jak klucz API serwera)

Ale google-services.jsonma wpis o nazwie api_key.
Czy to inny klucz API niż „ server api key”?

Willie Chalmers III wskazuje na „ Czy google-services.json jest zabezpieczone przed hakerami? ” I dodaje:

Tak, ten klucz API nie jest kluczem API serwera, który nigdy nie powinien być publiczny, więc jest w porządku, jeśli google-services.jsonjest widoczny dla innych.

W każdym razie nadal należy ograniczyć sposób używania klucza API klienta w konsoli Google Cloud.

VonC
źródło
11
To nie jest poprawne; inżynier Firebase stwierdziło, że jest w porządku , aby sprawdzić w kontroli źródła. Odpowiedź @ Yarona jest aktualna.
Willie Chalmers III
2
@WillieChalmersIII OK. Odpowiednio poprawiłem odpowiedź.
VonC
@WillieChalmersIII W tym poście pisze: „Plik JSON nie zawiera żadnych bardzo wrażliwych informacji (takich jak klucz API serwera)”, ale google-services.jsonma wpis o nazwie api_key. Czy to inny klucz API niż „klucz interfejsu API serwera”?
baueric
1
@baueric Zobacz odpowiedź, aby uzyskać więcej informacji. Tak, ten klucz API nie jest kluczem API serwera, który nigdy nie powinien być publiczny, więc jest w porządku, jeśli google-services.jsonjest widoczny dla innych. W każdym razie nadal należy ograniczyć sposób używania klucza API klienta w konsoli Google Cloud.
Willie Chalmers III
36

Z tej dyskusji wynika, że ​​możesz dodać go do publicznego repozytorium. Jego zawartość i tak trafia do APK i prawdopodobnie jest łatwa do wyodrębnienia.

Yaron
źródło
1
Zgadzam się i pracuję teraz nad tym problemem. Czy istnieje sposób na zaszyfrowanie kluczy w tym pliku przed dekompilacją pakietu APK?
stepheaw
13
Chociaż z pewnością prawdą jest, że klucze API można łatwo wyodrębnić z apk, pytanie dotyczyło tego, czy google-services.jsonnależy zobowiązać się do kontroli źródła w publicznym repozytorium open source . W zdecydowanej większości przypadków odpowiedź brzmi zdecydowanie NIE - chyba że właściciel repozytorium chce, aby cały świat domyślnie korzystał z limitu API konta Google. Odpowiedź @ VonC jest aktualna.
friederbluemle
2
hitraj47 zapytał o dodanie go do publicznego repozytorium. Ta dyskusja nie wspomina o repozytoriach publicznych i wydaje się, że omawiają repozytorium prywatne.
Eugene,