2011-08-11 5 views
0

私はオフラインで動作する必要があり、同じデバイスを持つ複数のユーザーに使用できる必要があるiPhoneアプリを持っています。パスワードを管理する最善の方法sqlite iPhone Appに保存する必要があります

私はsqliteデータベースの中にパスを格納します。データベースは通常のSQLサーバーボックス内の別のデータベースと同期しているため、そこに存在する必要があります。

だから私はマスターのdbからスタッフのユーザー名&のパスワードを読んで、その情報をiPhoneのbdに送り返しました。ユーザーがログインすると、ローカルbdから読み取られたアプリが表示されます。ユーザーはオフラインで作業し、最終的にマスターbdと再び同期します。

答えて

2

私はそれが「どのように私は、デバイスに保存されたデータを盗むから人々を保つことができる」だ場合、答えはあなたがすることはできませんが...

あなたの質問が何であるかを正確にはわかりません。デバイスに格納されている場合、物理的に直接アクセスできる人は、格納されている秘密を引き出すことができます。

特に、コードがデバイス上にある場合、ハッカーは暗号化キーや他の埋め込みリソース(データベースを含む)をそのデバイスから引き出すことができます。

だから、もしあなたがそれを防止しようとしているのであれば、それができないことを知っているだけです。材料が十分に感度の良い材料であれば、「切断された」モデルを完全に放棄するといいでしょう。

それほど敏感ではなく、誰かを徹底的に脅かさないようにするだけで、私たちが通常行っていることをやってください:データベースを暗号化し、アプリケーションにキーを保存してください。


あなたが唯一の選択肢はremote wipe enabledを持つことであるなら、その後侵害されるから盗まれた携帯電話を防ぐためにしようとしている場合は、少しさらに行きます。しかし、たとえ失われた電話がすぐに報告され、それを盗んだ人がSIMカードをヤンクして止める方法がわからない場合でも、それだけであなたを救うことができます。


今日の終わりには、ブラックベリーはまだリンゴを安全に吹き飛ばしています。


UPDATE:私のコメントが長すぎになる予定でした。

@mamcx:あなたが持っている問題の範囲を十分に理解しているとは思いません。 ANYデバイスのデータが侵害される可能性があります(including passwords stored in the keychain)。 iPhoneではそれほど難しいことではありません。

塩を使ってパスワードをハッシュし、ローカルのsqlliteデータベースに保存しているとします。今度は、切断されたユーザーがユーザー名とパスワードを入力すると、コードが入力した内容をハッシュして塩を追加し、それをローカルのdbの値と比較します。

これを行うために必要なすべての情報は、接続されていないため、デバイスに保存されています。これには、ハッシングアルゴリズムとソルトが含まれます。

今、デバイスが盗難された、または社員が黒い帽子を着用することを決めたとしましょう。すべてのデータを引き出すのは簡単です。これは非破壊的な方法で行うことができ、は誰もがそれが失われていたことを知らずに戻すことができる。この時点で、パスワードを解読するために虹のテーブルを作成したいのであれば、ハッカーはそれを持っています。ヘック、さまざまな雲の時間をbuild the rainbow tables for youに借りる "企業"があります。

もちろん、すべてのデータが既に失われているため、ハッカーが再販しない限り、パスワード自体は必要ありません。

質問:データはどれくらい重要ですか?あなたがそれを失うことができない場合は、アプリケーションが切断された実行することを許可しないでください。それがそれほど重要でないなら、是非、ローカルでやってください。他の場所で使用しているユーザー名/パスワードを使用しないでください。

+0

できるだけsqliteデータベースに保存されているパスワードを保護したいと思います。私はそれをハッシュで考え、多分塩の種を入れます。しかし、リソースに入れて、愚かなので、おそらくハードコア塩は私の次善策です。問題は、私は両方のサーバー+クライアントのために同じ塩を必要とすることです – mamcx

+0

それについて考えて、BDが同期しているとき、その瞬間に、私はオンラインです、私はログインオプションで私はハッシュを返すことができますか?キーチェンに入れて使用してください。 – mamcx

+0

@mamcx:更新をご覧ください – NotMe

関連する問題