2016-04-08 16 views
0

sensitiveInfoをjsコードに変えないでください。より良い方法は、ローカルストレージ内に配置することです。私の例の助けを借りて、最初のアプローチの脆弱性を説明することができますか?javascriptコード内に機密情報を保持するセキュリティ上の欠陥

例: すべてのjsファイルをまとめてバンドルするバンドラを使用します。 sensitiveInfoはグローバルではありませんが、YourStorage.jsの内部に格納されています。それを維持し、ファイルにアクセスするには、実行します。

import YourStorage from 'somepath/YourStorage'; 
YourStorage.sensitiveInfo = newValue; // QUESTION: can you steal this value? Is it accessible from console? 

質問:

  1. は、コンソールから変数sensitiveInfoアクセス可能ですか?
  2. 誰かが盗む方法を教えてください。sensitiveInfo
  3. 誰かが自分のコードからそれを盗むことができるのであれば、なぜ彼はローカルストレージからはいけませんでしたか?

UPDATE:(Iから保護するためにしようとしている?)私は、ユーザーが実際のお金を費やすことができ、モバイルウェブアプリを、書いています。私は彼らがお金を失うことができるあらゆる種類の攻撃(つまり、ローカルにインストールされたウイルス)から保護したい。

+0

*あなたは*から*を保護しようとしていますか? – deceze

+0

ローカルストレージから何かを戻すことができます。それは単なるテキストであり、非常に簡単にアクセスできます。機密データはローカルストレージに保存しないでください。 –

+0

@JosephMarikle autologinのためにauthTokenをどこに保存するのですか? –

答えて

2

ダウンロード可能なjavaScriptに入れられたものはすべて、ユーザーのデバイスで簡単に見ることができます。

最初に、SSLを使用して情報を暗号化して、「ワイヤ」で暗号化します。

第2に、クレジットカード情報を処理するために使用されるトークン(このトークンにカード番号を保存しないでください!)のような非常に機密性の高い性質のデータの場合、そのデータはシード/アプリケーション・サーバーに安全に保管されているキー。

多くの場合、ユーザーの識別情報とデバイスの両方を検証するようにアプリケーションを作成します。この検証の後、アプリケーションのサーバー側のみに格納されているキーを使用して、トークンを復号化します。

このプラクティスを使用すると、ユーザーとデバイスが誰であるかを合理的に判断できます。当然のことながら、そのようなアプリケーションは、盗難されたデバイスがアプリケーションアカウント/データにアクセスするのを容易に防止するために、その資格情報をデバイスに格納しないで、適切な認証自体を必要とする。単にセキュリティのためにデバイスの画面ロックに頼らないでください。

+0

コメントの私の弱い試みよりずっと良くてはるかに簡潔な説明。自分の好奇心の中で、どのようにしてユーザー**とデバイス**のIDを保証しますか?ほとんどのデバイス情報は簡単に偽装できます(MACアドレス、IP)。とにかくあなたが送っている情報は正確であると信じなければなりません。それでは、デバイスにアイデンティティを求めるのは本当にポイントですか? –

+0

デバイスの種類によってさまざまな方法があります。スマートフォンやタブレットなどのアイテムには、アカウント設定時に 'このユーザーはこの端末にあります'と言うために使用できる固有のキー(シリアル番号など)が付いていることがよくあります。 IPとMAC​​はこれ以上使用されることはほとんどなく、ユーザが別のネットワークに接続すると簡単にIPを変更でき、MAC番号は簡単に偽装されます。そのような一意のキーが利用できない場合は、通常、ユーザーがアカウントを設定し、デバイスに(暗号化された形式で)保存すると提供されます。 – Blackthorne

+0

@Blackthorneあなたの答えに感謝します!あなたのトークンで自動ログインする方法を説明してください。あなたは最初にユーザーを特定してからトークンを解読するしかないと言いました。しかし、どのように私はトークンなしでユーザーを識別できますか? –

関連する問題