JWTをクライアント側に保存するのに最適な場所について説明している記事はたくさんあります。要するに、それらはすべてについてです-
Httpのみの安全なCookie-XSSはありませんが、XSRFに対して脆弱です
ヘッダー(ローカルストレージまたはDOMに保存)-XSRFはありませんが、XSSに対して脆弱です
私はこれに対して非常に精通した解決策を思いついたと思いますが、私はセキュリティに完全に精通しているので、それが本当に精通しているのか愚かであるのかわかりません。
では、JWTを分割して、その一部をCookieに保存し、別の部分をヘッダーに保存するとどうなるでしょうか。それは壊れないでしょうか?
これにより、「ログアウト」の問題も解決されるはずです。ヘッダー部分を削除すると、ブラウザがログインできなくなります。
よろしく、ユージーン。
JWTは一緒に維持する必要があります。そうしないと、署名の検証が機能しません。
XSRFからの保護は非常に簡単で、必要なのは別のCookieだけです。
認証情報を保存するためにローカルストレージを使用しないでください。Cookieと同じドメインおよびオリジンルールに準拠していません。詳細はこちら:
https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet#Storage_APIs
免責事項:私は Stormpath で働いています。ホストされたユーザー管理ソリューションがあり、セキュリティに多くの時間を費やしています。 JWTとフロントエンド認証について説明する2つのブログ投稿を書きました。
https://stormpath.com/blog/build-secure-user-interfaces-using-jwts/
お役に立てれば!