Tôi có nên thêm google-services.json (từ Firebase) vào kho lưu trữ của mình không?


101

Tôi vừa đăng ký Firebase và tôi đã tạo một dự án mới. Firebase đã yêu cầu tôi cung cấp miền ứng dụng và khóa gỡ lỗi SHA1. Tôi nhập các chi tiết này và nó đã tạo tệp google-services.json để tôi thêm vào thư mục gốc của mô-đun ứng dụng của mình.

Câu hỏi của tôi là, có nên thêm tệp .json này vào kho lưu trữ công khai (mã nguồn mở) hay không. Nó có phải là thứ cần được bí mật, như khóa API không?

Câu trả lời:


94

Một google-services.jsontập tin là, từ doc căn cứ hỏa lực :

Firebase quản lý tất cả các thông tin đăng nhập và cài đặt API của bạn thông qua một tệp cấu hình.
Tệp được đặt tên google-services.jsontrên Android và GoogleService-Info.plistiOS.

Có vẻ hợp lý khi thêm nó vào a .gitignorevà không đưa nó vào repo công khai.
Điều này đã được thảo luận trong số 26 , với nhiều chi tiết hơn về những gì google-services.jsonchứa.

Một dự án như googlesamples/google-serviceskhông có nó trong của nó.gitignore ví dụ.
Mặc dù, như nhận xét của stepheaw , chủ đề này không đề cập đến

Đối với thư viện hoặc mẫu mã nguồn mở, chúng tôi không bao gồm tệp JSON vì mục đích là người dùng chèn mã của riêng họ để trỏ mã đến chương trình phụ trợ của riêng họ.
Đó là lý do tại sao bạn sẽ không thấy tệp JSON trong hầu hết các kho lưu trữ firebase của chúng tôi trên GitHub.

Nếu "URL cơ sở dữ liệu, khóa API Android và nhóm lưu trữ" không phải là bí mật đối với bạn, thì bạn có thể cân nhắc thêm tệp vào kho lưu trữ của mình.
Như đã đề cập trong " Liệu google-services.json có an toàn trước tin tặc không? ", Điều này không hề đơn giản.

baueric hỏi trong các bình luận :

Trong bài đăng đó anh ấy nói:

Tệp JSON không chứa bất kỳ thông tin siêu nhạy cảm nào (như khóa API máy chủ)

Nhưng google-services.jsonkhông có mục được gọi api_key.
Đó có phải là khóa api khác với " server api key" không?

Willie Chalmers III chỉ vào " Liệu google-services.json có an toàn trước tin tặc không? " Và nói thêm:

Có, khóa API đó không phải là khóa API máy chủ không bao giờ được công khai, vì vậy sẽ tốt nếu google-services.jsonngười khác hiển thị của bạn.

Trong mọi trường hợp, bạn vẫn nên hạn chế cách sử dụng khóa API ứng dụng khách của mình trong bảng điều khiển Google Cloud.


11
Điều này không thực sự chính xác; một kỹ sư của Firebase cho biết bạn có thể kiểm tra kiểm soát nguồn. Câu trả lời của @ Yaron là viết tắt.
Willie Chalmers III,

2
@WillieChalmersIII OK. Tôi đã sửa đổi câu trả lời cho phù hợp.
VonC

@WillieChalmersIII Trong bài đăng đó, anh ấy nói "Tệp JSON không chứa bất kỳ thông tin siêu nhạy cảm nào (như khóa API máy chủ)" nhưng google-services.jsonlại có mục nhập được gọi api_key. Đó có phải là khóa api khác với "khóa api máy chủ" không?
baueric

1
@baueric Xem câu trả lời này để biết thêm thông tin. Có, khóa API đó không phải là khóa API máy chủ không bao giờ được công khai, vì vậy sẽ tốt nếu google-services.jsonngười khác hiển thị của bạn. Trong mọi trường hợp, bạn vẫn nên hạn chế cách sử dụng khóa API ứng dụng khách của mình trong bảng điều khiển Google Cloud.
Willie Chalmers III

36

Từ đây thảo luận có vẻ như bạn có thể thêm nó vào một repo công cộng. Nội dung của nó dù sao cũng kết thúc trong APK và có thể dễ dàng trích xuất.


1
Tôi đồng ý và tôi đang giải quyết vấn đề này ngay bây giờ. Có cách nào để mã hóa các khóa trong tệp đó khỏi ai đó đang dịch ngược APK không?
stepheaw

13
Mặc dù chắc chắn là các khóa API có thể dễ dàng được trích xuất từ ​​apk, câu hỏi đặt ra là liệu có google-services.jsonnên cam kết kiểm soát nguồn trong repo nguồn mở công khai hay không . Và trong phần lớn các trường hợp, câu trả lời chắc chắn là KHÔNG - trừ khi chủ sở hữu repo muốn cả thế giới sử dụng hạn ngạch API tài khoản Google của họ theo mặc định. Câu trả lời của @ VonC là viết tắt.
Friederbluemle

2
hitraj47 đã hỏi về việc thêm nó vào kho lưu trữ công khai . Cuộc thảo luận đó không đề cập đến các kho lưu trữ công cộng và dường như họ đang thảo luận về một kho lưu trữ riêng tư.
Eugene
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.