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

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

ham
June 01, 2021

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

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

ham

June 01, 2021
Tweet

More Decks by ham

Other Decks in Technology

Transcript

  1. JWTを保存する場所について
    2021/6/1 Dev MTG
    ham

    View full-size slide

  2. 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

    View full-size slide

  3. 最初に結論
    Cookie vs Web Storage...
    Cookieを使おう!!
    ※もちろん時と場合によりますが

    View full-size slide

  4. 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

    View full-size slide

  5. Cookie
    ● Web初期から存在しており歴史が長い
    ○ サイトで必要な情報の保持や閲覧者のトラッキングなど様々な用途で使われている
    ● RESTful APIでは、Cookieは使わないことと認識されていることが多い
    が、厳密に言うと「✗Cookieを使わない」→「○サーバーに状態を保存しな
    い」が正しい。
    ● HttpOnlyをつけた場合、Javascriptから操作できなくなるのでXSSのリ
    スクがなくなる
    ○ Javascriptで操作できなくなるのでサーバーサイドで設定する
    ● CSRFのリスクがある
    ○ CORSを設定して同一ドメインのみ許可するようにすれば回避できる
    https://developer.mozilla.org/ja/docs/Web/HTTP/CORS

    View full-size slide

  6. 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

    View full-size slide

  7. 参照
    ● クロスサイトスクリプティング(XSS)
    https://www.shadan-kun.com/blog/measure/1052/#:~:text=%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%
    E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%EF%BC%88XSS%EF%BC%89%E3%81%A8,%E5%8F%
    AF%E8%83%BD%E3%81%AA%E3%82%B5%E3%f82%A4%E3%83%90%E3%83%BC%E6%94%BB%E6%92%83%E3%81%A7%E3%81%99%E3%80%82
    ● クロスサイトリクエストフォージェリ(CSRF)
    https://www.shadan-kun.com/blog/measure/2640/#:~:text=CSRF%E3%81%A8%E3%81%AF%E3%82%AF%E3%83%AD%E3%82%B9%E3%82
    %B5%E3%82%A4%E3%83%88,%E6%96%B9%E3%82%82%E5%A2%97%E3%81%88%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82

    View full-size slide