2017-04-26 13 views
0

認証キー、GoogleマップAPIキーなどのAPI資格情報を安全に保存するにはどうすればよいですか?現在、strings.xml.KeygenratorSpecの資格情報は最低限の23レベルのAPIを必要とします。私は2日以来立ち往生しているが、より良いアイデアになります。安全にAPIを保存する

答えて

0

短い答え:できません。

長い回答:難読化を使用してAPI資格情報を見つけるのを困難にすることはできますが、十分な時間とスキルを持つ人はそれを見つけて壊すことがあります。 KeyGeneratorを使用しても役に立ちません。私はあなたがAPI資格情報を暗号化/復号化することを計画していたと仮定しています。あなたのアプリケーションに格納されたり取得されたりするには、まだキーが必要です。だから、同じ問題が依然として残っています。あなたの資格情報にアクセスできるようになるには、もう1つの文字列を見つけなければなりません。

難読化は、おそらくあなたの最高のチャンスです。もちろん、それは弾丸ではありませんが、それが十分に複雑であれば、あなたのアプリケーションを破壊しようとしている人を遅らせるか、あなたはアプリケーションコードを難読化するためにproguardを使うことができます(もっと高度なものを支払うつもりがない場合)が、文字列を難読化することはありません。あなたはそれのために他のテクニックを使わなければなりません。オンラインでたくさんのサンプルを見つけることができます。独自の難読化レイヤーも使用できます。私はあなたがそれをするために良い勧告や基準を見つけるとは思わない。もちろん、どんなに頑張っても、誰かが元に戻すのは時間の問題です。

EDIT:

これはProGuardのを設定するための優れたチュートリアルです:http://wiebe-elsinga.com/blog/obfuscating-for-android-with-proguard/(あなたがAPKを生成するときそうあなたがクラッシュする可能性がありますので、あなたには、何に注意してください)

文字列の難読化については、次のことができこれと似たようなものを使用してください:https://github.com/efraespada/AndroidStringObfuscatorしかし、まだパスワードが必要なので、復号化が可能です。既存の文字列をパスワード(既にアプリで使用しているもの)として使用すると、コードの難読化と組み合わせると誰かを混乱させる可能性があります。さまざまなファイル/リソースに文字列の一部を隠し、文字列を作成したいときにそれらを組み合わせると、おそらくもっと混乱が生じます。しかし、あまりにも複雑にすると、見つけやすいかもしれません。たとえば、strings.xmlに暗号化された文字列(読み取り不可能)が1つだけ含まれている場合は、これが保護しようとしている文字列である可能性があります。これに続いてこの情報につながります。だから、私の意見では、ベスト/良いプラクティスはありません。あなたはオンラインで見ていくつかのアイデアを得ることができますが、私はあなたがそれを隠すための最良の(あまり明白でない)方法がどこにあるのかあなた自身を判断することを提案します、そしてこれはあなたのコードとアプリケーション構造に依存します。しかし、とにかく、これは経験の浅い/怠け者の攻撃者や自動ツールを騙すだけです。

私がしばしば行うことは、デバッグが有効な場合、またはapkファイルが自分で署名されていない場合、コードの特定の部分を実行できないことです。これらの対策は弾丸ではありませんが、怠惰な攻撃者の能力を低下させる可能性があります。 https://www.airpair.com/android/posts/adding-tampering-detection-to-your-android-app

+0

@ jackgu1988 –

+0

@HardikMehtaの場合は、更新された回答を確認してください – jackgu1988

関連する問題