2012-04-25 7 views
7

ユーザー依存のデータをlocalStorageに保存する場合(例:複数のユーザーが同じブラウザをサイトで使用できるため)、このシナリオをどのように扱いますか?複数のユーザーに対してlocalStorageを処理する方法は?

フロントエンド側にユニークなuserIdのようなユーザーを識別できるとしましょう。私はおそらく次のような何かをするでしょう:

// retrieve the data 
data = JSON.parse(window.localStorage.getItem(userId)) || {}; 

// persist the data 
window.localStorage.setItem(userId, JSON.stringify(data)); 

これは単純なやり方ですか?

EDIT: それにより@MДΓΓБДLや他のコメントごとに考え、少しを与えた後、のデータが敏感であると仮定してみましょう。その場合、上記の例は実際には素朴です。この場合、機密データを扱う方法に関するアイデアはありますか?または、おそらく答えは:それをやっていない、バックエンドでそれを保存する?

+0

あなたが求めているのは、それが_secure_ではありません。 –

+0

情報はどのように秘密ですか? JSONに独自の認証メカニズムがない限り、ユーザーは自分のIDを簡単に偽装することができます。 – vol7ron

+0

@MДΓΓLLLLLL:いいえ、そういうことは間違いありません。私はこれを十分にはまだ十分には考えていませんが、今のところ、機密データではないと仮定しましょう。例えば、ほんの些細な好み。 –

答えて

4

機密データは、クライアントにはほとんど格納されません。コンピュータの物理的なセキュリティを保証したり、そのコンピュータ上のログインしているユーザーがコンピュータを使用していることを保証しない限り(どちらも通常は真ではありません)、機密情報をあなたがそれを避けることができるなら、クライアント。

機密情報をサーバーに保存し、ブラウザに情報を提供する前に適切なログイン資格情報を要求する方がずっと安全です。サーバー上のデータの物理的なセキュリティを制御し、ユーザーが自分のサーバーではないデータにアクセスするのを防ぐことができます。さらに、SSLで機内を保護することができます。

実際には、1人のユーザーだけが利用できるローカルのアイテムを1台のコンピュータと1台のコンピュータに保存する場合は、パスワードの入力を求めるプロンプトが表示され、そのパスワードを使用してローカルストレージに保存されたデータを暗号化/ 。一時的なオフラインアクティビティを除いて、私は現在、インターネットにアクセスしても、そのユーザーが利用できるサーバーに格納するよりも、ユーザーエクスペリエンスが優れている理由はわかりません。モバイルアクセス、タブレットアクセス、ラップトップアクセスなどの最近の状況では、傾向はクラウドに保存することが多いようです。そのため、特定のユーザーは、インターネットアクセスを介してデータにアクセスできます。正確に同じコンピュータを使用する必要があります。

+0

機密データは、暗号化されていて、可逆的な方法でMACで保護されている場合、クライアント*に保存することが可能です。あなたのWebフレームワークはこれを行う手段を提供するかもしれません。あなたが暗号を使って熱くなっていない限り、自分自身を動かしても気にしないならば。 – Venge

+0

私の質問の下にある@ chester1000のコメントによると、ローカルデータをユーザーパスワード(i.c.w. AESなど)で暗号化することを考えました。私は[ZeroBin](http://sebsauvage.net/paste/)やこれまでに聞いたかもしれない似たようなアイデアを作りたいと思っています。 –

+0

@fireeyedboy - ローカル暗号化に関するコメントを追加しました。 – jfriend00

関連する問題