2017-01-05 13 views
1

私たちのアプリケーションでは、新しいJWTトークンは、ユーザーがリクエストを送信するたびにクッキーに返されます。ユーザが短時間に複数のリクエストを行うと、それぞれにほぼ完全に存続する複数の有効なトークンが存在します。もちろん、ブラウザは最新のものを使用していますが、誰かが以前のものを使用してユーザーを偽装する可能性があります。リフレッシュ後に以前のJWTトークンを無効にする方法

新しいトークンをディスパッチするときに以前のトークンを無効にする方法はありますか、最後のトークンに寿命があまりないときにのみ新しいトークンをディスパッチする唯一の選択肢ですか?

答えて

1

トークンを「無効にする」唯一の方法は、それらをステートフルに追跡することです。

これは通常、有効で無効なトークンのキー/値キャッシュを保持し、各要求時にこれらのリストに対して着信要求トークンをチェックするようなことを意味します。

このようにすることの欠点は、(トークンの有効性について中央ストアにチェックしているので)JWTの「ステートレス」メリットをたくさん失うことですが、メリットはより安全にできるということですあなたがもはやサービス可能にしたくないトークンを即座に取り消すことによって。

1つの回避策は、乱用を最小限に抑えるために、アクセストークンを極短い期間(5分程度)にすることです。

+0

クライアントIPをトークンに埋め込む方法と、今後のリクエストIPと検証済みトークンのIPを比較する方法はありますか?これにより、悪意のあるユーザーが盗まれたトークンで機密データを取得するのを防ぐことができます(ただし、彼はCSRFトークンを取得できれば、依然として彼のIPを偽装してPOSTすることができます)。 –

+0

これを試すことはできますが、IPSは一意の識別子ではありません。特に公共ネットワーク(携帯電話、オフィスワイファイなど)で。あなたがセキュリティに敏感なアプリケーションを構築しているなら、私はそれをしません。 – rdegges

+1

十分に適切ですが、NATも問題になる可能性があります –

関連する問題