web-dev-qa-db-ja.com

localstorageはどの程度安全ですか?

質問はそれをすべて本当に言います。サービスを提供したいのですが、自分でデータをデータベースに保存したくありません。ハッキングなどの最近のニュースをすべて見ると、クライアントがデータを完全に制御できるほうがいいように思えます。

問題は、保存されたデータが潜在的に機密であるということです。私がやろうとしていたことは...クライアントがWebサイトにアクセスすると、「あなたはパーソナルコンピュータとパブリックコンピュータのどちらにいますか」という質問が表示されます。公共のコンピューター上にある場合、サイトはアクセスを拒否します。

彼らがパーソナルコンピュータ上にいた場合、パスワードを設定するように促します。すべてのデータはこのパスワードで暗号化されます。これは明らかに安全ではありません。暗号化方式はJavaScriptであり、パスワードはプレーンテキストであるため、知識のあるユーザーがlocalStorageでパスワードを見つけてデータにアクセスできると思います。

私はこれはそれほど問題ではないと感じています。パーソナルコンピューターを使用している場合、このような事態が発生する可能性はほとんどありません。他の誰かがコンピューターの特定のユーザーアカウントにアクセスする必要があり、他の誰かがサイトについて知っている必要があります...他の誰かが理解する必要がありますlocalStorageとそれにアクセスする方法。機密データは、IDやその他多くの情報を危険にさらすものではありません。ほとんどの人が公開したくないものを記録するだけです。

だから本当に問題は、localStorageは十分に安全ですか?

追加の質問.. localStorageを消去するのはどのくらい難しいですか?ユーザーが誤ってデータをワイプしてほしくない。

最後に、サイトにアクセスできるパスワードを持っているかのように、データを暗号化/復号化する価値さえあります。

33
JasonS

ローカルストレージでさえも、パスワードをまったく保存しないのはどうですか?鍵導出関数を使用して、パスワードから鍵を取得できます。ソルトと適切な数の反復で、これはまあまあ安全です。

10
CodesInChaos

ローカルストレージでJavaScriptを使用すると、最大で(サーバーとブラウザとサーバー間の接続)と同じくらい安全です。

誰かがサーバーを変更してさまざまなJSファイルを提供したり、(送信中に)変更したりした場合、サーバーからクライアントに送信されたJSファイルは必要なデータで何でもできます。

さらに:データはクライアント上にあるため、データを保護するために何もできません。通常のサーバーでは、たとえばアクセスの頻度を制限します(安全なリモートパスワードの例:10分以内に1つのパスワードのみが読み取られます)。データがクライアント上にあり、データを操作するすべてのコードが攻撃者によって操作される可能性がある場合、これはすべて役に立ちません。

結局のところ、localstorageを使用しても、Webアプリケーションを保護する必要があります。では、なぜ(うまくいけば)安全なサーバーで処理を行うのでしょうか。そうでない場合は、クライアントにインストールされているローカルプログラムも使用しないのはなぜですか。

2
Daniel Böhmer

LocalStorageデータの復号化に使用されるサーバーからキーを取得するのはどうですか?

次のように機能します。

  • セッションが確立されると、サーバーはキーを返します。
  • そのキーは、localStorageのデータを暗号化/復号化するために使用されます。
  • ユーザーがページを離れると、キーが失われ、他のユーザーがlocalStorageの内容を読み取ることができなくなります。

これにより、ユーザーがセッションを確立している間のみアクセスが許可されます。

2
Justin Meyer

2つの問題:

  1. プレーンテキストのパスワードを保存し、見つからない可能性があるという事実に依存している場合、それはあいまいさによるセキュリティです。データをクリアテキストで保存し、同じ仮定に依拠する(まだ安全ではないが、誤った安心感はない)

  2. ほとんどのブラウザでは、キャッシュを消去すると、localStorageコンテンツも削除されます。履歴とキャッシュを消去しても、重要なデータが失われることはありません。

あなたはlocalStorageが何を意味するのかを考えすぎていると思います。 webappsでうまく機能するローカルデータベースを使用する場合は、 CouchDB 's couchapps を参照してください。

ただし、パスワードは保存しないでください。

1
Giacomo

通常、ローカルストレージを消去することは難しくありませんが、ブラウザによって異なります。ただし、ブラウザの開発者ツール(firebug、webkitなど)を入手する必要があります。

クッキーと同じように考えてください。機密データをローカルストレージに保存しないでください。パスワード、クレジットカード番号など。

x回の非アクティブの後、ローカルストレージをクリアする機能をいつでも実装できますが、セキュリティの問題は解決しません。自動セッションが期限切れになるようなものです。同じ問題が当てはまります。ある人がコンピューターを離れてから、セッションの有効期限が切れる前に誰かが座った場合、彼らは何かをすることができます。

0
hvgotcodes

javascrypt を使用できます。暗号化/復号化キーになるパスワードをユーザーに尋ねます

パスワードを保存する必要はありませんが、ユーザーがページを開くたびにパスワードを要求します。
ユーザーが望めば、それを保存することができます。

しかし、それからstivloのコメントに参加するために、どうですか:

  1. 複数のデバイスへのアクセス
  2. バックアップ
  3. パスワードをお忘れですか
  4. キャッシュクリアが簡単すぎる

推論の始まりを再考すべきだと思います。いくつかの最近のセンセーショナルなイベントのためにクラウドを回避することは、簡単な結論です。

0
Mic