Чи слід додати google-services.json (з Firebase) до свого сховища?


100

Я щойно зареєструвався у Firebase і створив новий проект. Firebase запитав у мене домен мого додатка та ключ налагодження SHA1. Я ввожу ці деталі, і він генерує файл google-services.json, який я можу додати в кореневій частині мого модуля програми.

Моє питання полягає в тому, чи слід додавати цей файл .json до загальнодоступного (відкритого) репо. Це щось секретне, як ключ API?

Відповіді:


94

google-services.jsonФайл, з доку Firebase :

Firebase керує всіма вашими налаштуваннями API та обліковими даними через один файл конфігурації.
Файл отримав назву google-services.jsonна Android та GoogleService-Info.plistiOS.

Здається, має сенс додати його до .gitignoreі не включати в публічне репо.
Це обговорювалось у випуску 26 , де було докладніше про те, що саме google-services.jsonмістить.

Наприклад, такий проект googlesamples/google-servicesмає його у своєму розпорядженні.gitignore .
Хоча, як зауважив по stepheaw , ця нитка робить згадка

Для бібліотеки або зразка з відкритим кодом ми не включаємо файл JSON, оскільки намір полягає в тому, щоб користувачі вставляли власні, щоб вказувати код на власну серверну систему.
Ось чому ви не побачите файли JSON у більшості наших репозиторіїв Firebase на GitHub.

Якщо "URL-адреса бази даних, ключ API Android та сегмент сховища" для вас не секретні, тоді ви можете додати файл до свого репо.
Як уже згадувалося в " Чи захищений google-services.json від хакерів? ", Це не так просто.

Бауерік запитує в коментарях :

У цьому пості він говорить:

Файл JSON не містить надчутливої ​​інформації (як-от ключ API сервера)

Але google-services.jsonє запис, який називається api_key.
Це інший ключ API, ніж " server api key"?

Віллі Чалмерс III вказує на " Чи безпечний google-services.json від хакерів? ", І додає:

Так, цей ключ API не є серверним ключем API, який ніколи не повинен бути загальнодоступним, тому добре, якщо його google-services.jsonбачать інші.

У будь-якому випадку, ви все-таки повинні обмежити спосіб використання ключа клієнтського API на консолі Google Cloud.


10
Це насправді не правильно; інженер Firebase сказав, що це нормально, щоб перевірити контроль над джерелами. Відповідь @ Ярона стоїть.
Віллі Чалмерс III

2
@WillieChalmersIII Добре. Я відповідно змінив відповідь.
VonC

@WillieChalmersIII У цьому дописі він каже: "Файл JSON не містить ніякої надчутливої ​​інформації (як-от ключ API сервера)", але google-services.jsonзапис має виклик api_key. Це інший ключ API, ніж "серверний ключ API"?
baueric

1
@baueric Дивіться цю відповідь для отримання додаткової інформації. Так, цей ключ API не є серверним ключем API, який ніколи не повинен бути загальнодоступним, тому добре, якщо його google-services.jsonбачать інші. У будь-якому випадку, ви все одно повинні обмежити використання ключа вашого клієнтського API на консолі Google Cloud.
Віллі Чалмерс III

36

З цього обговорення, здається, ви можете додати його до публічного репо. Його вміст у будь-якому випадку потрапляє в файл .apk, і його, мабуть, легко отримати.


1
Я згоден і зараз працюю над цим питанням. Чи є спосіб зашифрувати ключі у цьому файлі від когось, хто декомпілює APK?
stepheaw

13
Незважаючи на те, що безумовно вірно, що ключі API можна легко витягти з apk, питання полягало в тому, чи google-services.jsonслід призначати контроль над джерелом у відкритому репозиторії з відкритим кодом . І у переважній більшості випадків відповідь однозначно НІ - якщо власник репо не хоче, щоб увесь світ використовував квоту API свого облікового запису Google за замовчуванням. Відповідь @ VonC стоїть.
friederbluemle

2
hitraj47 запитав про додавання його до загальнодоступного сховища. У цій дискусії не згадується про публічні сховища, і, схоже, вони обговорюють приватне сховище.
Євген
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.