2013-08-20 5 views
6

私は貴重な情報の非常に大きなデータベースに依存するiPadアプリを開発しています。私は自分自身もデバイスに精通していない(私は個人的なiPadを持っていない、私はこれまでにこのアプリの開発の外に1つを使用していない)。ユーザーはどこでも私のアプリを通してデータベースのデータを直接見ることができません。ユーザーはSQLiteデータベースにどの程度アクセスできますか?私は自分のアプリを同梱していますか?

私のデータベースのデータにユーザーがアクセスできる方法はありますか(おそらく、デバイスをコンピュータに接続してXcodeまたはiTunesを経由することによって)?もしそうでなければ、私はjailbreakingについて少し読んできました。そうすることで、ユーザーがデバイスのファイルシステムにアクセスできるようになり、データベースの内容を見ることができます。または、jailbreakingとjailbrokenデバイス(実際にthis questionのデータベースファイルを表示するためにアプリをインストールすることは、それが非常にjailbrokenデバイスのための "データベースリーダー"アプリケーションを開発することが簡単かもしれないことを示唆します)?

+3

平均的なiDeviceユーザーは、あなたが鼻を突き出すとデータベースを知ることができません。知識のあるユーザーは、dbファイルを簡単に取得し、必要に応じてiDeviceから何か/すべてを取得することができます。 –

+2

重要なデータベース情報はデータベースサーバーに保存してください。これはiPadではありません。あなたはこの情報を暗号化することができますが、ローカルファイル/データベースに格納されているものはすべてiPadユーザーがアクセスできます。 –

答えて

5

データベースがある場合は、人がそれに触れることができます。これは、パワーユーザーではないということです。認証する資格情報を持っていない場合はデータベースからデータを読み取ることができないかもしれませんが、ハードディスクにデータベースを作成した後は、再び忍耐と知識の問題です。

これは、iPadやiOSだけでなく、あらゆるデバイスやオペレーティングシステムに適用される原則です。あなたのアプリが使用するいくつかのファイルをユーザが使いこなしたくない場合は、非常に長い暗号鍵で暗号化することができます。誰かが最終的にその情報を壊すかもしれない...あなたができることは、あなたのアプリがとにかく時代遅れになる前にそうすることができないことを保証することです。

それ以外の場合は、人が触れることのできないサーバーにデータを保存してください。

+0

ああ、それは私が恐れていたものです。私たちはサーバー上にもデータを持っていますが、インターネットにアクセスできない場合でも100%機能がなければならないという要件の1つです。そのため、デバイスのすべてを最初の場所。私は暗号に慣れていませんが、それは私が探し始める必要があるように見えます。 – GeneralMike

+0

あなたが必要とする情報は100%機密か、ユーザーが迷惑にならないようにするための設定ですか? – Renan

+0

100%秘密の側にもっと。私の会社は、私たちの業界にとって重要なデータを約20年間収集しており、それが私がアクセスする必要があるデータです。恐れは、顧客がそのデータにアクセスし、それをコピーし、もはや当社のサービスを必要としない、あるいはそれを回して競争相手になるための重要な足掛かりとして使用することです。 – GeneralMike

1

コードやデータベースがデバイス上にある(暗号化されているかどうかを問わず)データを公開するとすぐに、私は自分のアプリを守るためにどれほど苦労しても、開発者(ハッカーではありません)です。復号鍵が電話に渡され、電話で復号化された場合、そのデータも公開されているとみなします。基本的にあなたはうんざりしています。あなたのアプリを守ることをあきらめる。よりクーラーなものを作り始めて、インターネットでデータを送信するときにHTTPSを使用してください。あなたのキー、APIトークン、高得点、コインなどを守ることは全く文字通り不可能です。はい、少しでも試してみてください。あなたの努力は無駄です。毎日、ローカルに暗号化されたデータベース、ローカルに暗号化されたアプリを見ている公開されているハッカーツールは、難読化されたアプリの中で毎日良くなっています。あなたはそれを打つことはできません。開発者はハッカーよりもスマートではありません。エンドユーザーに誤ったセキュリティ感を与える。あなたの家をロックしたり、車をロックしたりするような人は、誰かが侵入するのを止めることができますか?いいえ。それを解決する唯一の方法は、大きなお尻の銀行(別名サーバー)を構築し、フロントデスク(クラウドAPIとも呼ばれます)にいくつかの窓口を置き、それを完了させることです。

0

私はIOSの開発者ではありませんが、私はSQLiteを知っています。 SQLiteでデータベースを暗号化することができます - sqlite3_key_v2()のドキュメントを探します。アプリケーションは内部的にパスワードを持っている必要がありますが、ハッカーがそのパスワードを取得することを困難にすることができます。静的な文字列をパスワードとして使用しないでください。代わりに文字列を取り、それをプログラムで操作してください。これにより、攻撃者が鍵を復元することは不可能ではありませんが、より困難になります。しかし、それはより多くの複雑さを得るために複雑さを追加します。攻撃者は、データベースファイル自体にアクセスする必要があります。データベースパスワードを回復するには、アプリケーションをリバースエンジニアリングする必要があります。

関連する問題