2015-10-01 15 views
6

ローカルのSqLiteデータベースをデータソースとして使用するXamarin.Formsアプリケーションがあります。データは独自のものなので、誰かがデータベースファイルにアクセスした場合、そのデータにアクセスするためには復号化する必要があるように保護したいと考えています。Xamarinアプリケーションでのローカルプロプライエタリデータの保護

また、特定の時点でより多くのデータ(アプリ内購入)を使用する機能を購入する必要があるように、ユーザーがデータベースに対して行うクエリの数を制限したいと考えています。

私は、ユーザーのデータプランへの影響を最小限に抑えるためにできるだけネットワークを呼び出すことを避け、接続が不十分またはない状況でもアプリがうまく動作するようにしたいと考えています。だから、私は、ローカルデータベース(おそらくSqLite)にデータを保存したいと思っています。

私は、データを保護すると同時にネットワークの使用を最小限に抑えるために、この問題にどのようにアプローチするのか不思議です。

1)ユーザーのダウンロードが/アプリをインストールしてみましょう:ここ

は、(それが可能だ場合)私が考えていたものの一種です。

2)最初の読み込み時に、アプリはデバイスIDとユーザーの現在の購入情報に基づいてキーをアップロードします。次に、アップロードされたキーを使用して暗号化されたSqLiteデータベースファイルをダウンロードします。

3)ユーザーがクエリの制限に達すると、データベースファイルが削除されます。より多くのデータを購入すると、新しいキーがアップロードされ、新しい暗号化されたデータベースがダウンロードされて使用されます。

思考?より良い方法がありますか?

+0

素敵な質問、データベースはクエリを制限したり、データベースを削除すると私は考えてあまり助けにならない、ローカルに保存されている場合、ユーザーがアクセスする方法を見つけることができます、のは何を言われて他の人を見てみましょうアプリケーションを開かずにデータベース全体を暗号化するだけで十分です。 – CDrosos

答えて

0

述べたCLBとして、SQLCipherはオープンソースであるの確保に役立つオープンソース(https://www.zetetic.net/sqlcipher/open-source/

があるとしても、ソースから構築することができます。したがって、コンポーネントをお支払いしたくない場合は、自分でソースをダウンロードしてビルドしてから、Xamarinで使用するためにラップしてください。これは、確かに、技術的に挑戦的な仕事です。

それはオプションではない場合、私は2つの他のオプションをお勧めします:

  1. は、ローカルにデータを保存するためにあなたの必要性を再評価します。ユーザーのデータプランに不具合が生じるほど十分なデータを転送する必要はほとんどありません。携帯電話とWi-Fiの間では、ユーザーが接続しなくてもそれほど一般的ではありません。確かに起こりますが、これは非常に重要なアプリケーションがいくつかありますが、データがそれほど敏感であれば譲歩する必要があります。

  2. データをローカルに格納する必要があり、SQLCipherを使用できない場合、最後の実際のオプションは、暗号化ライブラリを使用し、データベースファイルではなくデータ自体を暗号化することです。これは理想的ではありませんが、通常はさまざまな理由からですが、それが最後の手段である可能性があります。 PCL Cryptは、見ることができるPCL対応の暗号ライブラリです。

https://github.com/aarnott/pclcrypto

1

私はSQLCipherをお勧めします!それはXamarin(http://components.xamarin.com/view/sqlcipher-for-xamarin-ios)内のコンポーネントですが、それは完全にあなたのデータベース:)

+0

Xamarinのコンポーネントは素晴らしいですが、プラットフォームあたり499ドルで、それはかなりの価格です。 Android、ios、Windows phoneの無料または安価なオプションはありますか? –

関連する問題