web-dev-qa-db-ja.com

google-services.jsonはハッカーから安全ですか?

ハッカーが私のAPKを逆コンパイルした場合、彼はこのファイルから私のAPIキーを見ることができますか?私は自分のソースコードリポジトリについて心配していません。ハッカーがどういうわけか私のAPKからこのAPIキーを見ることができるのをただ心配しています。このファイルを暗号化して実行時に解読しようとしていますが、いくつか問題があります

15
stepheaw

Googleプラグインのセットアップ方法では、google-services.jsonファイルのコンテンツを非表示にするのは非常に困難です。実行可能な唯一の方法は、プラグインがすでに行っていることを自分で再実装することですが、これはお勧めしません。 Googleが意図したとおりにプラグインを使用すると、残念ながらAPKを解凍してFirebase/Google APIキーを手に入れるのは簡単です。

ただし、誰がそれを使用できるかを構成することにより、そのAPIキーの乱用を防ぐことができます。 Androidアプリの場合、APIキーはAndroidアプリケーションが特定のキーストアによって署名され、特定のパッケージ名。

これらの制限を設定するには、こちらのドキュメントに従ってください https://cloud.google.com/docs/authentication/api-keys#api_key_restrictions

APIキーを制限することに加えて、Firebase RTD/Firestoreを使用している場合は、データストアにセキュリティルールを構成していることも確認する必要があります。ユースケースによっては、匿名ユーザーがデータベースのセクションを読み書きできないようにすることができます。

詳細が必要な場合は、Androidアプリケーション: https://proandroiddev.com/developing-secure- Android-apps-8edad978d8ba

6
Julien Arzul

アプリ内のすべての内容は非常に簡単に読み取ることができるため、GoogleはAPK、特にfirebase/googleクラウドメッセージングやこの種のサービスの場合はサーバーキーに情報を入力しないようにする必要があることを示唆しています。

2
greywolf82

Firebaseドキュメントによると こちら

アプリをFirebaseプロジェクトに接続すると、Firebaseコンソールは、ローカルプロジェクトに直接追加するFirebase構成ファイル(Android/iOS)または構成オブジェクト(Web)を提供します。

  • IOSの場合、GoogleService-Info.plist構成ファイルを追加します

  • Androidの場合、google-services.json構成ファイルを追加します

Firebase構成ファイルまたは構成オブジェクトは、アプリをFirebaseプロジェクトとそのリソース(データベース、ストレージバケットなど)に関連付けます。

そして、コンテンツをパブリックとして識別します。

コンテンツは公開と見なされます。これには、プラットフォーム固有のID(Firebaseコンソールの設定ワークフローで入力)や、APIキー、Realtime Database URL、ストレージバケット名など、Firebaseプロジェクトに固有の値が含まれます。

Realtime Database、Cloud Firestore、またはCloud Storageを使用する場合でも、Firebaseで説明されているセキュリティガイドラインに従う必要があることに注意してください。

また、これらのファイルはアプリケーションで公開されていますが、オープンソースプロジェクトの公開リポジトリで利用できるようにしないでください。

1
fhsilva

明らかに安全ではありませんが、選択の余地がないため、ライセンスキーを制限することが重要です。

Apkを解凍します(名前を.Zipに変更して開くか、bashからunzip [your apk path]

さて、猶予を与えてください:(ZIPのルートで)resources.arscという名前のファイルを見つけ、それを開くことに同意した任意のエディターで開きます。 TextEditまたはAtomで十分です。AIzaを検索すると、ここにあります。ユーザーIDを使用してください。

...またはそれほどハッカースタイルの方法:APKをAndroid Studioにドラッグアンドドロップするだけです。すべてが内部に表示されます。resources.arscにすべてのキーと値があり、すべてあなたの文字列、すべての整数...すべてが簡単で美しいGUIで。

より大きな問題:ProGuardに効率的に難読化するように指示する方法はありますか?または、サーバーと共有する秘密鍵で暗号化する方法があります。

0
Maneki Neko