共有設定のセキュリティについて疑問に思います。
それらがMODE_PRIV(0)で作成された場合でも、sharedpreferencesへのアクセスを取得することは可能ですか?
利用可能なすべての共有設定をリストし、他のアプリからすべての設定を取得することは可能ですか?
sharedpreferencesは、パスワードや認証トークンなどの機密データを配置するのに適した場所ですか?
ありがとう
共有設定のセキュリティについて疑問に思います。
それらがMODE_PRIV(0)で作成された場合でも、sharedpreferencesへのアクセスを取得することは可能ですか?
利用可能なすべての共有設定をリストし、他のアプリからすべての設定を取得することは可能ですか?
sharedpreferencesは、パスワードや認証トークンなどの機密データを配置するのに適した場所ですか?
ありがとう
回答:
共有設定は、デバイスのファイルシステムにファイルとして保存されます。デフォルトでは、特定のアプリケーションの実行に使用するUIDのみにアクセスを許可するファイルシステムの権限が設定された状態で、アプリのデータディレクトリ内に保存されます。したがって、Linuxファイルのアクセス許可がそれらへのアクセスを制限するのと同じように、それらは非公開です。これは、Linux / Unixシステムの場合と同じです。
rootはファイルシステム上のすべてにアクセスできるため、デバイスへのrootレベルのアクセス権を持つ人は誰でもそれらを見ることができます。また、作成するアプリと同じUIDで実行されるすべてのアプリケーションはそれらにアクセスできます(これは通常行われず、2つのアプリを同じUIDで実行するように特定のアクションを実行する必要があるため、これはおそらく大きな問題ではありません)懸念)。最後に、インストールされたAndroid OSを使用せずに誰かがデバイスのファイルシステムをマウントできた場合、アクセスを制限する権限をバイパスすることもできます。
設定(またはアプリケーションによって書き込まれたデータ)へのそのようなアクセスが心配な場合は、暗号化する必要があります。それらについて心配している場合は、表示されるリスクのレベルにどの程度の保護が必要かを正確に把握する必要があります。これについては、Androidプラットフォームのアプリケーションセキュリティで非常に広範な議論があります。2011年12月に公開されました(免責事項:私はこの本の著者です)。
SharedPreferencesは電話の/ data / data /フォルダーにあるXMLファイルにすぎないため、ルート化されたデバイスでスーパーユーザー権限を持つアプリケーションまたはユーザーは、MODE_PRIVで作成された場合でも、SharedPreferencesにアクセスできます
まだ誰からも守る方法があります...このリンクをチェックしてください。ここでは、暗号化を使用してデータを設定に保存できます。クラスは自明であり、非常に使いやすいです。
https://github.com/sveinungkb/encrypted-userprefs
他の人が言ったように、誰もがそれにアクセスできますが、この場合、それが暗号化されているので誰もその中のデータを読むことができません。そのsecure.Forよう最大限のセキュリティ私の提案は、実行時ではなく、ハード、それをコード化で暗号化に使用する鍵を生成することになります。それを行う方法はたくさんあります:)
SharedPref
です。しかし、その後、他のキーをどうすればよいでしょうか。しかし真剣に、最良のシナリオは、暗号化されたキーとデバイスUIDをSSLを使用してサーバーに送信し、そこに保存して必要に応じて取得することです。これには接続が必要ですが、デバイスをブラックリストに登録して、すべてのデータを突然破棄することができます。常時インターネット接続がなければ、データを暗号化しようとしても100%安全ではありません。
それらがMODE_PRIV(0)で作成された場合でも、sharedpreferencesへのアクセスを取得することは可能ですか?
コード番号で。ただし、スーパーユーザー権限がある場合は、アプリケーションファイルを取得できます。
利用可能なすべての共有設定をリストし、他のアプリからすべての設定を取得することは可能ですか?
スーパーユーザー(ルート権限を取得されたデバイス)の場合は、アプリのすべてのプライベートファイルをプルできます。
sharedpreferencesは、パスワードや認証トークンなどの機密データを配置するのに適した場所ですか?
いいえ、簡単にハッキングできます。機密のデータを共有prefrenceファイルに入れたい場合は、データを暗号化して保存できます。暗号化キーをNDK /サーバーに保存できます。