2017-10-05 7 views
1

私は、開発者のネットワークタブでXHRリクエストを表示するだけで、角度2アプリのAPIのエンドポイントにアクセスできることに気付きました。ツール、およびトークンにアクセスするには、console.log(localStorage.getItem('token'))を記録してトークンを取得します。とにかくこれを防ぐことができるのでしょうか?Angular 2.xアプリでAPIを保護する

+0

あなたのトークンライフタイムは何ですか? – Kuncevic

+0

@Kuncevic私はそれに問題がない、私はちょうど一般的なセキュリティの欠陥として気づいた – tobie

答えて

1

あなたはWebリクエストでトークンを見てからユーザーを防ぐことができます方法はありませんが、それは時間やエネルギー価値がないようにあなたがそれを確保することができます多くの方法があり、 1つのトークンをクラックする正しく、安全に使用されていれば、セキュリティの欠陥とはみなされません。

たとえばJSON Webトークン(JWT)を使用すると、トークンデータが秘密鍵でハッシュされます。あなたのアルゴリズムと秘密鍵を慎重に選択すると、トークンの存続期間内にトークンを分解することは基本的に不可能です(有効期限を設定した場合)。

JWTを使用している私のプロジェクトの1つでは、トークンでJWT ID(JTI)値をランダムに生成し、さらに別の秘密鍵でハッシュし、httpOnlyというクッキー値として保存します。そうすれば、たとえJWTが侵害されても、JWT IDが一致しないため、別のマシンやブラウザでもJWTを使用することはできません。

1

トークンが常にクライアントに公開されているため、この問題を回避できる方法はないと思います。あなたが行うことができる唯一のことは、クライアントがN秒/分ごとにトークンをリフレッシュするようにトークンライフタイムを制限することです。

このアプローチでさらにハードコアにしたい場合は、トークンのライフタイムを短く設定できるため、リクエストごとに有効期限が切れます。その場合、トークンが盗まれた場合、誰かがそのトークンであなたのAPIにアクセスしようとすると動作しません。この方法では、apiサーバーにアクセスするたびに、サーバーに新しいトークンを要求する必要があります。また、あなたのアプリケーションが信頼できるクライアントであるため、各応答のヘッダーに新しいトークンを提供するサーバーによって達成できます。

あなたがそのようなソリューションを構築している場合、あなたが XSRFに注意する必要があり、角が実際にあなたがHttpClientModule

で使用することができますHttpClientXsrfModuleから来るCookie-to-header tokenため サポートでビルドを持っていることいくつかの有用な資源:

関連する問題