10

Android アプリケーションに機密情報を保存する必要があります。リソース ファイルに配置すると、PackageManager.getResourcesForApplication()を使用するだけで、別のアプリがそのファイルを参照して読み取ることができるのは簡単なことのように見えます。

人々に簡単に詮索されてほしくないこのような情報をどこに置くのが正しいのでしょうか?

コンパイルされたJavaファイルにある必要がありますか? または、クラスファイルも簡単に読み取れますか? また、それらがJavaファイルにある場合、それらを必要とするXMLファイルからそれらを参照することは可能ですか(たとえば、GoogleマップのAPIキー用)?

4

3 に答える 3

9

APK はデバイスから取得され、とにかくバラバラになります。(結局のところ、一部のデバイスはルート化されています。) そこにハードコードしたものは、どこにあるかに関係なく、検出されて抽出されます。もちろん、潜在的な利益が努力を裏付ける場合. それ以外の場合は、難読化などの隠蔽によるセキュリティが有効な場合があります。

真のシークレットの処理は、なんらかの入力、特にパスワードに基づいている必要があります。

幸いなことに、API キーは、想定どおりに使用されたとしても、必ずしも本当の秘密であるとは限りません。

于 2012-09-17T19:10:32.567 に答える
4

Google は請求の下でこれに関するいくつかの良い推奨事項を持っています。要約すると、リモートサーバーを使用し、難読化して安全なランダムナンスを使用します。APK は常にリバース エンジニアリングされる可能性があり、難読化は単純な攻撃に対してのみ機能するため、apk に安全なものはありません。

于 2012-10-12T10:18:09.547 に答える
-3

他のアプリケーションからのデータへのアクセスを拒否したいだけの場合は、SharedPreferences を使用できます。Contex.getSharedPreferences(/ prefs ファイル名/, Context.MODE_PRIVATE); を使用するだけです。ドキュメントによると、MODE_PRIVATE は、作成されたファイルに呼び出し元のアプリケーション (または同じユーザー ID を共有するすべてのアプリケーション) のみがアクセスできることを意味します。

于 2012-09-17T19:12:19.400 に答える