11/15

https://techracho.bpsinc.jp/hachi8833/2019_10_09/80851
こちらの記事で、localstorageの危険性が論じられています。
この中で、localstorageにJWTを保存しておくとXSSによって抜き取られる可能性があるという内容がありますが、cookieに保存した場合でもXSSによって成りすまして編集などの操作をするのは可能だと思います。
どちらの保存方法もXSSがあると危険というのは同じですが、cookieに保存する方がマシという理解で良いのでしょうか?
また、cookieにsession IDを保存する従来のやり方が安全と言う結論となっていますが、
cookieにJWTを保存するというのはどうでしょうか?

お忙しいところ恐れ入りますが、お答えいただけますと幸いです。
よろしくお願いします。

そもそもJWTをセッション管理に使うと、ログアウト時にセッション情報を破棄できず、JWTが漏洩した場合になりすましを防ぐ手段がないという課題があります。これはJWTをどこに保存しても同じです。また、ウェブストレージ(Local StorateやSession Storage)にJWTなどを保存すると、XSSによりJWTそのものが漏洩するのに対して、クッキーにセッションIDを保存する方法はHttpOnly属性を前提とするとセッションIDそのものはXSSにより漏洩しません。この場合でも、ご指摘のようにJavaScriptの攻撃コードによりなりすまし自体は可能ですが、生セッションIDが漏洩する場合に比べて攻撃難易度を少しだけ上げることができます。また、サーバー側でセッション情報を破棄することにより、それ以降の被害を避けることができます。 これらは「事実」であるわけですが、JWTでも攻撃を緩和する手段はあり、セッションID方式に対するメリットが大きい応用であれば、採用するケースはあり得ると思います。

スポンサーリンク

スポンサーリンク