localstorageはどれくらい安全ですか?


33

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

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

それらがパーソナルコンピュータ上にある場合、パスワードを設定するように求められます。すべてのデータは、このパスワードで暗号化されます。これは明らかに安全ではありません。暗号化方法はJavaScriptであり、パスワードはプレーンテキストであるため、経験豊富なユーザーがlocalStorageでパスワードを見つけてデータにアクセスすることは可能だと思います。

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

本当に問題なのは、localStorageは十分に安全なのか?

追加の質問.. localStorageを消去するのはどれくらい難しいですか?ユーザーが誤ってデータを消去するのは望ましくありません。

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


2
クライアント側のJavaScriptは、暗号化を行うのに最適な場所ではありません。賢明なユーザーなら誰でもコードを見て、暗号化アルゴリズムをハックして、実際には何もせず、暗号化されたパスワードを受け入れるだけにすることができます。

回答:


10

パスワードをまったく保存せず、ローカルストレージにも保存しないのはどうですか?キー派生関数を使用して、パスワードからキーを取得できます。ソルトと妥当な回数の反復により、これは適切に安全になります。


パスワードがPHPに送信され、その背後でキーが生成されると、より安全な権利になりますか?
ジェイソンズ

いいえ。パスワードは最初にクライアントに与えられます。サーバーに送信することにより、盗難のリスクが高まります。JSでキーの派生を行うと、クライアントの秘密が保持されます。いずれの場合も、その直後にPWを忘れてください。しかし、私はそれはまだ無意味だと思う-私の答えを参照してください。

多くのハッカーは非常に知的です... Lib bCryptを使用してください。
エディB 14

2

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

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

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

結局、localstorageを使用しても、Webアプリケーションを保護する必要があります!では、なぜ(できれば)安全なサーバー上で何かをするのですか?そうでない場合、クライアントにインストールされたローカルプログラムを使用しない理由は何ですか?


主なセキュリティ上の問題は、デバイスが他の誰かに使用されたり盗まれたりすることだと思いませんか?

2

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

次のように機能します。

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

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


3
ただし、これはデータにオフラインでアクセスするには機能しません(localStorageの主な使用例のようです)。この方法をオフラインで使用するには、キーを保持する必要があります。
ティモシーリーラッセル

0

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

あなたがクッキーを考えるようにそれを考えてください。機密データをローカルストレージに保管しないでください。パスワード、クレジットカード番号など。

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


0

2つの問題:

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

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

localStorageが何を意味しているのかを考えすぎていると思います。webappsで適切に動作するローカルデータベースを使用する場合は、CouchDBcouchappsをご覧ください

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


0

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

パスワードを保存する必要はありませんが、ユーザーがページを開くたびにパスワードを要求します。
ユーザーが望むならそれを保存するかもしれません、そして今、その意味。

しかし、stivloのコメントに参加するために、次のことはどうですか:

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.