2013-08-09 17 views
14

私のアプリはログインが必要です。Remember username and password能力があります。ユーザ名とパスワードは、localStorageでデータをどのように安全に保管していますか?

localstorage.setItem( 'username'、username);と保存されます。

このユーザー名とパスワードはどのように安全ですか?他のアプリがデータにアクセスしてログイン情報を取得できるかどうかは、Androidで特に心配していることです。

アプリはiOSとAndroid用で、私はPhoneGap 2.9を使用しています。

答えて

4

各アプリケーションはPhoneGapで独自のwebviewを使用していますが、localStorageにはそのwebviewでしかアクセスできません。

編集:私はまだパスワードをハッシュすると思います。

+1

私はランダムなAPIトークンが優れている理由は、パスワードのハッシュ/を使用しない理由セクションを追加しました:2016年https://stackoverflow.com/a/18144689/1518423 – stefreak

15

LocalStorageは通常の状況下ではアプリからのみアクセス可能です。特定のプラットフォーム(iOS、Android)のサンドボックスと同じくらい安全で、アプリのデータが他のアプリから読み取られるのを防ぐことができます。

場合によっては、そのサンドボックスが予期しないほど強くない場合があります。これらのケースで:デバイスが根ざしている

  • またはジェイルブレイク
  • メーカーがセキュリティ更新プログラムを提供するために、失敗したか、ユーザーがちょうどそれがある場合、攻撃者が例えば、デバイスに物理的にアクセスを持っている
  • 更新されませんでした盗まれた

攻撃者がクリアテキストのパスワードとユーザー名にアクセスできる場合、彼女は自分のサービスだけでなく他のアカウントでも試用できます。アプリのユーザーが複数のサービスに同じパスワードを使用した場合、攻撃者は同じパスワードを使用する可能性があります。

パスワードハッシュの保存はどうですか?

サーバ側のアプリケーションでは、保護された環境(アクセス制御のあるデータセンター、セキュリティアップデートを担当するシステムエンジニア)で実行されるため、これは素晴らしいアイデアです。

一方、電話は簡単に盗まれ、ユーザーはしばしばセキュリティ更新プログラムをインストールしないか、インストールできません。

ハッシュがソルトされていない場合、ハッシュを取得した場合、レインボーテーブルを使用してクリアテキストパスワードを取得するのは非常に簡単です。ハッシュがソルトされている場合は、簡単なパスワードのクリアテキストパスワードを取得するのが非常に簡単です。また、安全でないパスワードハッシュを生成することも非常に簡単です。

ソリューション:店舗ランダムに生成されたアクセストークン:どんなにパスワードがどのように単純または複合体は、それだけで不可能トークンを見て、クリアテキストのパスワードを取得することです。

TL; DR

あなたはAPIサービスのいくつかの種類に対する認証のための資格情報を使用している場合、あなたはも、このようなiOSのよう安全な店で、ローカルパスワードとユーザー名を保存しないでくださいキーチェーン。

あなただけランダムに生成されたトークン保存される代わりに何をすべき(ませパスワードハッシュを!)あなたはユーザーではなく、クッキーにセッションIDを格納する概念に似ているAPI(から入手/パスコンビネーション)。 1つの可能性は、OAuthを使用することです。

このようにして、サンドボックスがデータを保護できない場合や電話機が盗まれた場合でも、実際の資格情報が漏洩することはありません。

+0

更新を? – Lakshay

+3

はまだ有効です(2016年も有効です)。可能であれば、ユーザーの資格情報を安全に保存することは避けてください。バックエンドにランダムな認証トークンを生成します。 – stefreak

0

localStorage内にパスワードを保存することは安全な方法ではありません。 PhoneGapを使用している場合は、ユーザー名&のパスワードをiOS Keychainに保存してみてください。このプラグインを見て: https://github.com/shazron/KeychainPlugin

+2

私はその遅れを知っているが、アンドロイドの携帯電話は何のように似ていますか? – Alok

関連する問題