2016-09-29 5 views
0

重要な資格情報をブラウザに入れて、ウェブページ上のjavascriptではアクセスできますが、サーバや他のウェブサイトではアクセスできません。機密データをブラウザに保存するため、他のWebサイトにアクセスできない

私はユーザーにAES暗号化メッセージを表示するウェブサイトを構築しています。メッセージはAPIを介して取得され、私のサーバーに保存されます。ユーザーがログインして、このように、ブラウザで解読するために彼のキーを入力することができます:私はProtonMailことに気付きました

$(document).on("submit", "#decryption_form", function(e) { 
    e.preventDefault(); 
    var key  = $("#key").val();         // The key is retrieved through a form input div 
    var iv  = key.substring(32);        // The initialization vector is a part of the key submitted by the user 
    var encrypted = $("#message").attr("encrypted");     // The encrypted message that was fetched from the server was added as an attribute to a div 
    var decrypted = CryptoJS.AES.decrypt(encrypted, key, { iv: iv }); // The message is decrypted 
    $("#message").html(decrypted);         // The decrypted message is displayed to the user 
}); 

- ブラウザでPGP鍵ペアを置くゼロ知識電子メールプロバイダがで復号化するためにあなたの資格情報 - ウェブページを更新したり、同じブラウザタブにURLをコピー/ペーストしても(ただし、URLを新しいタブに貼り付ける場合は除きます)、機密性の高い資格情報を保持できます。彼らのソースコードはopen sourceですが、私が理解するには複雑すぎます。

これは、機密情報を保護し、同じブラウザタブで(自分のサーバーから送信する必要なしに)自分のWebページ間を移動するユーザーのデータを保持する必要があると考えるようになります。

This postでは、トピックについて説明していますが、正準/具体的な回答はありません。 this 3 year old postもありますが、なぜOPがブラウザにセンテイブデータを保存する必要があるのか​​に関するコメントがほとんどです。

+0

:-)(いくつかのケースではなく可能)解読が困難であるだけで強力な暗号化のオプションを持ってhttps://developer.mozilla.org/en- US/docs/Web/API/Window/sessionStorage)とCookieが含まれています。ブラウザのユーザーがキーにアクセスできることに注意してください。しかし、あなたのケースではおそらくOKです。 – Pointy

+0

クッキー内にトークンがある可能性はありますか? – Hackerman

+0

機密情報は暗号化された形式で保存する必要があります。秘密鍵を共有するまで誰もその鍵を解読できません。 –

答えて

2

ウェブストレージ(spec,)は起源固有です。私のオリジンがそこにデータを保存していれば、そこからあなたのものを読むことができません(モジュロブラウザのバグ)。

クッキーはサイト固有のもので(パス固有のものもありますが)、クッキーはワイヤで送信され、Webストレージは現在非常に優れたAPIでサポートされています。このような何かのためにクッキーを使用する本当の理由と少なくとも2つの本当に良い理由はありません。

ブラウザの内蔵Dev Toolsを使用して、エンドユーザーがWebストレージやCookieを閲覧することを妨げるものはありません。しかし、問題のキーはユーザー自身のものだと言われているように、おそらくそれは誰かが自分のマシンにアクセスすると問題になるでしょう...

+0

答えをありがとう。あなたはウェブストレージを参照していますが、私がそれを読んでいるときには、さまざまな種類のウェブストレージがあります。あなたのMDNリンクは特にLocalStorageのためのリンクです、そうですか?もしそうなら、参照のために数行のコードを提出することができますか?これを読むと、 'localStorage.setItem(" key "、" 123 ");'と 'localStorage.getItem(" key ");'で行うことができますが、正しい方法であることを確認する必要があります。 – ChristofferJoergensen

+0

@ChristofferJoergensen:ウェブストレージは 'localStorage'と' sessionStorage'で構成されています。 'sessionStorage'はセッションの終わりに終了します(セッションの仕様を参照)。' localStorage'はそうではありません。あなたが話していることについては、あなたは 'localStorage'がほしいと思う。 –

+0

@ T.J.Crowder、素晴らしいアンカーに感謝します!しかし、簡単な質問。ブラウザ拡張はどうですか?彼らはどのページのウェブストレージにもアクセスできます。したがって、ユーザーが悪意のある拡張機能をインストールした場合、その拡張機能によってWebストレージに保存されたデータにアクセスできます。私は正しい?この問題を回避する方法はありますか? –

0

クッキー、セッション、ローカルストレージに保存されたデータは、または他の方法で。

あなたは(あなたの主なオプションは、[セッションの保存]です

+0

説明してください:「解読するのは難しいですが(場合によっては可能ですが)」 – zaph

関連する問題