web-dev-qa-db-ja.com

APK署名パスワードをプライベートgitリポジトリに保存しても安全ですか?

Android cocos2d-xを使用したゲームを開発しています。Androidリリースの場合、proj.Android/gradle.properties

# uncomment it and fill in sign information for release mode
#RELEASE_STORE_FILE=file path of keystore
#RELEASE_STORE_PASSWORD=password of keystore
#RELEASE_KEY_ALIAS=alias of key
#RELEASE_KEY_PASSWORD=password of key

プロジェクト全体(このファイルを含む)は、プライベートリポジトリのBitBucketに配置されます。だから私は4つの質問があります:

  1. 通常の開発者にとっては安全ですか?
  2. 誰かがこのファイル(およびGoogle PlayからのAPK)にのみアクセスできる場合、彼は何ができますか?
  3. 誰かがこのファイルとキーストア(およびGoogle PlayのAPK)にアクセスした場合、彼は何ができますか?
  4. Gitプロジェクトとは別に保存する方法はありますか?
  1. いいえ、違います。 nberingが言ったように、それを共有したい場合、gitの履歴から削除するのは非常に困難です。 Gitは、この種の情報を保持することも意図されていません。
  2. あまりない。パスワードはキーを暗号化するだけなので、暗号化されたキーがなければ、実際には何もできません。
  3. たくさん。マルウェアを含むアプリのバージョンを作成して、あなたのアプリとして渡すことができます。ただし、アプリストアアカウントにアクセスできないと、アプリストアアカウントを直接公開できない可能性があります。これにより、他の方法で配布することができます。さまざまなアプリストアを通じて、またはウェブを使用して。ユーザーがアプリストアアカウントにアクセスできる場合、マルウェアバージョンをアップデートとして公開することができ、ユーザーは知る方法がありません。
  4. はいといいえ。手動ビルドを使用する場合は、ファイルをgitignoreに追加して、他の方法で配布できます。自律ビルドを使用する場合、ほとんどのgitサイトは シークレットを保存するための特別な機能 をサポートします。
7
Peter Harmann

何故なの?

それはすべてリスクの問題です。私の主な反対意見は、そのリポジトリをパスワードを知らないはずの誰かと共有したい場合、gitの履歴からパスワードを削除するのは本当に難しいということです。その時点までにすべての履歴を書き直す必要があります。したがって、すべてのコミットを書き直すか、スカッシュしてパスワードが含まれていた履歴を失う必要があります。そして、あなたはおそらくそれを行うことを覚えていないので、それらを省くだけで最も安全です。

秘密を守ることを避ける

シークレットをgitに保存しないようにするため、通常はシークレットファイルを.gitignoreに追加します。誰かが現在欠落しているファイルの内容を知る必要がある可能性があるため、編集されたフィールドを「CHANGEME」などのgradle.properties.exampleファイルなどに残し、ファイルを使用する誰もがgradle.propertiesの作成方法を知っているようにします。

可能であれば、環境変数から置き換えて、.exampleファイルを使用する必要がないようにします。私は個人的に、プロジェクトごとに環境変数を設定するために使用できるgit無視の.envrcファイルを作成できる direnv のようなツールをお勧めします。ディレクトリに入ると、ターミナルから環境変数が自動的にロードされます。ただし、環境変数は起動された環境から取得されるため、これは常にグラフィカルツールでうまく機能するとは限りません。

一部のグラフィカルIDEは、「ターゲット」や「ワークスペース」などの概念をサポートしています。これは、一部の構成オプションがソース管理にチェックインされるファイルで構成され、その他はコンピューター上のファイルに固有であることを理解しています。

リスクは何ですか?

誰かがあなたの署名鍵とパスワードを入手した場合、彼らはあなたのアプリケーションの悪意のあるコピーに署名する可能性があります。

このコピーをアプリストアに送信できた場合、ユーザーは悪意のあるコピーが変更されたことを通知することなく、悪意のあるコピーを自動的に受信する可能性があります。それはあなたの鍵によって署名されたので、彼らのデバイスはそれを信頼するでしょう。

アプリストアの提出がなくても、アプリケーションのコピーに署名し、アプリが既にインストールされているデバイスにサイドロードして、同じキーで署名されているため、アプリを信頼できる可能性があります。

2
nbering