私の質問を読んでくれてありがとう!私は今日JWTについて研究してきました。もともと私は、JWTがhttpOnlyのクッキー(サーバーによってのみ発行可能)に格納されていない限り、JWTが2つの主な種類の攻撃に対して公開されているという現代的なコンセンサスを考えました。JWT - それらをLocalStorageとSessionStorageに保存する
背景:
は、しかし、私はハッカーがそれをトークンへのアクセスを取得し、デコードする場合限り、あなたはJWTペイロード内の任意のユーザの機密情報を入れないように、それは大丈夫だと、今日学びましたなぜなら、せいぜいユーザーの一意のIDだけを表示するからです。サーバーがJWTを検証し、ペイロードのサブキーのIDを取得すると、ユーザーのパスワードやその他の機密情報をサーバー上で取得することができます。
しかし、ハッカーがトークンのMIDリクエスト/レスポンスを傍受し、トークンが期限切れにならない場合、何が起こるかについてはまだ100%明確ではありません。私の理解では、ハッカーはユーザーのアカウントにアクセスしてユーザーのページをめちゃくちゃにすることができ、ユーザーが自分のパスワードをリセットしても、トークンをハッカーから取り消すことはできません。トークンを持っていて、サーバーが意図したユーザーではないことを認識するほどスマートではありません。
はとにかく、私は(私は唯一のAPIとしてバックエンドサーバを使用していますので、私はHttpOnlyのクッキー、またはそのことについては、クッキーを使用することはできません、それはプログラムが直面している私のフロントエンドクライアントにクッキークロスサーバーを提供することができないことを実現します例えば、反作用)。
この場合、認証JWTを保存する場所は2つしかないようです:LocalStorage、またはSessionStorage ...ブラウザを閉じることでトークンが破棄されないという事実のために、ほとんどの人がLocalStorageに行くと思います。
私の主な質問はこれです:
がのlocalStorageかのsessionStorageはJWTを格納するための唯一の「合理的な」場所であるということなので、一つの他よりも安全、そしてなぜですか?
感謝!