LocalStorageは通常の状況下ではアプリからのみアクセス可能です。特定のプラットフォーム(iOS、Android)のサンドボックスと同じくらい安全で、アプリのデータが他のアプリから読み取られるのを防ぐことができます。
場合によっては、そのサンドボックスが予期しないほど強くない場合があります。これらのケースで:デバイスが根ざしている
- またはジェイルブレイク
- メーカーがセキュリティ更新プログラムを提供するために、失敗したか、ユーザーがちょうどそれがある場合、攻撃者が例えば、デバイスに物理的にアクセスを持っている
- 更新されませんでした盗まれた
攻撃者がクリアテキストのパスワードとユーザー名にアクセスできる場合、彼女は自分のサービスだけでなく他のアカウントでも試用できます。アプリのユーザーが複数のサービスに同じパスワードを使用した場合、攻撃者は同じパスワードを使用する可能性があります。
パスワードハッシュの保存はどうですか?
サーバ側のアプリケーションでは、保護された環境(アクセス制御のあるデータセンター、セキュリティアップデートを担当するシステムエンジニア)で実行されるため、これは素晴らしいアイデアです。
一方、電話は簡単に盗まれ、ユーザーはしばしばセキュリティ更新プログラムをインストールしないか、インストールできません。
ハッシュがソルトされていない場合、ハッシュを取得した場合、レインボーテーブルを使用してクリアテキストパスワードを取得するのは非常に簡単です。ハッシュがソルトされている場合は、簡単なパスワードのクリアテキストパスワードを取得するのが非常に簡単です。また、安全でないパスワードハッシュを生成することも非常に簡単です。
ソリューション:店舗ランダムに生成されたアクセストークン:どんなにパスワードがどのように単純または複合体は、それだけで不可能トークンを見て、クリアテキストのパスワードを取得することです。
TL; DR
あなたはAPIサービスのいくつかの種類に対する認証のための資格情報を使用している場合、あなたはも、このようなiOSのよう安全な店で、ローカルパスワードとユーザー名を保存しないでくださいキーチェーン。
あなただけランダムに生成されたトークン保存される代わりに何をすべき(ませパスワードハッシュを!)あなたはユーザーではなく、クッキーにセッションIDを格納する概念に似ているAPI(から入手/パスコンビネーション)。 1つの可能性は、OAuthを使用することです。
このようにして、サンドボックスがデータを保護できない場合や電話機が盗まれた場合でも、実際の資格情報が漏洩することはありません。
私はランダムなAPIトークンが優れている理由は、パスワードのハッシュ/を使用しない理由セクションを追加しました:2016年https://stackoverflow.com/a/18144689/1518423 – stefreak