2016-09-15 13 views
1

リフレッシュトークンをメモリにAngular(Javascript)アプリケーションで保存する必要があります。Javascript/AngularJSでリフレッシュトークンを保護する

トークンは、認証時にAjaxコールを介して配信され、ユーザがログオフするかブラウザを閉じるまでメモリに保存する必要があります。

このトークンをメモリに安全に保存して、コンソールアクセスやウェブページにアクセスできる悪意のあるブラウザプラグインでは抽出できないことを知りたいと思います。

私は角にリフレッシュトークンを使用する方法についていくつかの他のスレッドを見つけたが、私は実装が安全ではないと思う:

AngularJS - http interceptor - resend all request after token refresh

私はへのプライベートオブジェクトとのAuthServiceを交換した場合、それは安全だろうリフレッシュとアクセストークンを保存しますか?

+0

あなたの脅威は何ですか?それは既にクライアント上にあるので、ユーザーから隠すことはできません。どのような攻撃を心に留めていますか?おそらくXSS? –

+0

はいXSSまたは悪意のあるブラウザのプラグインまたは...?私はこれらの問題の本当の専門家ではない – mvermand

+0

私はこれについて少し考えました、それは実際には良い質問です。私は他のセキュリティの人々があなたが答えを得ることを望むと思いますかと思います。 –

答えて

1

私は、メモリに保存された機密データ(JavaScriptのリフレッシュトークンなど)を保護するためのいくつかの異なる脅威があると思います。

あなたのデータはディスクに書き込まれます。ブラウザを実行しているPCのメモリが不足していて、スワップを開始したり、ユーザーが休止状態にすることを検討してください。いくつかの低レベル言語では、スワップ時にも特定のメモリページをディスクに書き込まないようにすることができますが、Javascriptでは制御がはるかに少なく、ハイバネーションも防止できません。

重要なことは、機密情報が(何らかの種類のディスク暗号化がない限り)平文でディスクに書き込まれる可能性があることです.Javascriptではこれについて多くはできません。これが受け入れられない場合は、Javascriptを使用しないでください。

攻撃の別のタイプは、ブラウザまたはオペレーティングシステムの脆弱性を悪用して攻撃者がメモリの一部にアクセスする可能性があります。これらのことについては、あまりお手伝いすることはできません。OSとブラウザを信頼するだけです。

最後に、アプリケーションレベルの攻撃、主にXSSがあります。私はあなたが実際にこれをある程度まで保護することができると思います。例えば、クロージャーのような他のスクリプトにデータを公開しないようにデータを保存することです。 This articleは私ができるよりも優れていると言います。

+0

"一部の低レベル言語では、スワップしても特定のメモリページをディスクに書き込まないようにすることができます。カーネルは仮想メモリへのアクセスのみを提供していませんか? – zerkms

+1

はい、少なくともLinuxのmlock()でディスクにスワップしないようにカーネルに頼むことができます:http://man7.org/linux/man-pages/man2/mlock.2.html –

+0

、ありがとう.. – zerkms

関連する問題