2017-01-14 7 views
0

Androidでさまざまなアクティビティ間でデータを送信する方法やデータを送信する方法についてQ & Aを検索しましたが、データが機密性がある場合は、安全な方法でそれを行います。アンドロイドでの活動の間でデータを送信するためにAndroidでのアクティビティ間で最も安全な方法を送信する

ベストな方法: https://stackoverflow.com/a/4878259/5544859

データを送信するために最も安全で効率的な一つであり、これらの方法の?

+0

は、これら2つのアクティビティはありそうであるよう周りのスティックので、容易に、キャッシュには静的フィールドを使用して、再取得できない場合同じアプリと同じプロセスで – CommonsWare

+0

私はインテントを好む –

+0

@CommonsWareはいそうです。それはA→B→C→D→Eの5つのアクティビティ間でデータを送信するプロセスです。アクティビティEに入っているときは、データをストレージ/データベースに送信します。したがって、これらのアクティビティ間でデータを転送している間は、機密データであるため安全なものを探しています。 –

答えて

2

データをIntentに入れると、そのデータがプロセスからコアOSプロセスにIPCによって送信され、次に別のIPC呼び出しを介してプロセスに戻る限り、最も安全性が低くなります。 Androidの最新バージョンでは、このセキュリティ上の問題がないことを知っています。—他のアプリはそのIPCをスパイすることはできません。ただし、他のすべてが等しい場合、プロセス内の機密データを常に保持する方が、そのデータをプロセス外に渡すよりも安全です。

「永続オブジェクト(sqlite、共有プリファレンス、ファイルなど)」は、コンポーネント間でデータをやりとりする方法ではありません。これは、長期間使用するためにデータを永続化する方法です。今では、ほとんどのアプリでこのような永続性が必要となるため、他の理由で永続性を持ち、単純に活用することができます(たとえば、Aはデータの書き込みをトリガーし、Eはそのデータを読み込みます)。ただし、効率的な観点からは、ディスクI/Oは遅いため、データの受け渡しではなく永続性が必要な場合に実行します。 通常、永続性を維持するために、ディスクI/Oを最小限に抑えるために、ある種のメモリ内キャッシュを維持します。これには静的フィールドとWeakReferencesが含まれます。もう1つはスタックオーバーフローの答えです。カフオフ

、そしてあなたのアプリについて何も知らない:

  • この機密データはただ、それを持続キャッシュを使用し、Eは、キャッシュからデータを取得したり、永続持って、その後、永続化する必要がある場合store

  • この機密データを保存しないでくださいが、サイズが大きく、ネットワークI/Oなどで再度取得できる場合は、静的フィールドとWeakReferenceを使用してキャッシュするので、ヒープスペースを無限に広げる

  • 、この機密データを永続化するべきではない、とのいずれかが大きくないですか、それは限り、あなたのプロセスは

+0

データは、アクティビティ "A"からアクティビティ "E"(B、C、Dを経ている)までの情報を収集するため、アクティビティ "E"に達した後も永続化する必要があります。 –

+0

私は2つの選択肢があると信じています:1)AからEへ行く間にデータを保持し、次にEのすべてのデータを取り出してサーバーに送信する、または2)AからEへデータを渡してから、それをサーバーに送信します。どのような区別がある場合、これらの2つのオプションのどちらがより安全ですか? –

+0

@RedaM:「私には2つの選択肢があると信じています。おそらく、これはウィザードUIのメタファーを使って、5つではなく1つのアクティビティにするでしょう。それを超えて、私の答えで概説したオプションがあります。 "これらの2つのオプションのうち、どれが区別されているとより安全ですか?" - プロセスの外部にデータを渡さない限り、セキュリティは同等です。 – CommonsWare

関連する問題