Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JWTを保存する場所について

Avatar for ham ham
June 01, 2021

 JWTを保存する場所について

JWTはどこに保存するのがベターか調査
Web Storage or Cookie

Avatar for ham

ham

June 01, 2021
Tweet

More Decks by ham

Other Decks in Technology

Transcript

  1. JWTはどこに保存するのがベターか調査 調査したところ、下記を読めばOKって感じなのですが、せっかくなのでサマって みました。 • Where to Store your JWTs –

    Cookies vs HTML5 Web Storage https://stormpath.com/blog/where-to-store-your-jwts-cookies- vs-html5-web-storage • Cookies vs Localstorage for sessions – everything you need to know https://supertokens.io/blog/cookies-vs-localstorage-for-sess ions-everything-you-need-to-know
  2. Web Storage • HTML5で追加された機能 • Session StorageとLocal Storageがある ◦ Session

    Storageはブラウザやタブを閉じると消える • 他のドメインからは参照することができない • 同一ドメインからはアクセスできるため、XSSのリスクがある ◦ XSSはメジャーなWebフレームワークを使っていれば対策されていることが多く、脆弱性を 埋め込む可能性は低いが、開発者のミス等で紛れ込む可能性を 0にすることはできない。 • MDN Web Docs https://developer.mozilla.org/ja/docs/Web/API/Window/sessionStorage
  3. Cookie • Web初期から存在しており歴史が長い ◦ サイトで必要な情報の保持や閲覧者のトラッキングなど様々な用途で使われている • RESTful APIでは、Cookieは使わないことと認識されていることが多い が、厳密に言うと「✗Cookieを使わない」→「◦サーバーに状態を保存しな い」が正しい。

    • HttpOnlyをつけた場合、Javascriptから操作できなくなるのでXSSのリ スクがなくなる ◦ Javascriptで操作できなくなるのでサーバーサイドで設定する • CSRFのリスクがある ◦ CORSを設定して同一ドメインのみ許可するようにすれば回避できる https://developer.mozilla.org/ja/docs/Web/HTTP/CORS
  4. Cookie(その他) • Cookie使用同意を求めるポップアップ ◦ 日本では必須ではないがグローバル対応を見据えているならつけるべき ◦ ただウザいだけで利用者はよくわかっていないと思うが https://www.freestyle-entertainment.co.jp/blog/cookie_02/ • Cookieに設定すべきもの

    ◦ Expires ▪ 持続時間 ◦ Secure ▪ httpsの場合のみCookieを送信できる ◦ SameSite ▪ Strictを設定することで同一サイトのみ Cookieが送信される ◦ 名前の接頭詞を”__Host-”にする ▪ Secure、Domain未設定、Path=/の場合のみ送信される • (開発環境でhttpを使いたいときに困るかも・・・ ) • MDN Web Docs https://developer.mozilla.org/ja/docs/Web/HTTP/Cookies