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

今時のCookie事情

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for sutetotanuki sutetotanuki
July 31, 2024
640

 今時のCookie事情

Avatar for sutetotanuki

sutetotanuki

July 31, 2024
Tweet

More Decks by sutetotanuki

Transcript

  1. Cookieの仕組み 8 サーバからブラウザへのレスポンスヘッダに Set-Cookie を送信すると... Set-Cookie: name=value; Secure; SameSite=Lax; HttpOnly

    次のリクエストからブラウザがSet-Cookieで渡された 名前と値をCookieリクエストヘッダで送信する Cookie: name=value
  2. Cookieの属性 11 • Path属性 • Domain属性 • HttpOnly属性 • Secure属性

    Set-Cookie: name=value;Path=/; Domain=example.com; HttpOnly; Secure
  3. Path属性 12 Set-Cookie: name=value;Path=/; Domain=example.com; HttpOnly; Secure Cookieを送信するパス。ユーザーがアクセスしてるパスが Path属性に指定したパスに含まれてないとCookieを送信し ない。

    Path属性に指定した値のサブディクレトリも送信が許可さ れる。例えば /admin と指定すると /admin/dashboad でも Cookieが送信される。ただあまり使われてない 有名なフレームワークでは / (ルート) を指定されている
  4. Domain属性 13 Set-Cookie: name=value;Path=/; Domain=example.com; HttpOnly; Secure Cookieが送信されるドメインを指定 何も指定しないのが最もセキュアで、ユーザーがアクセスし たサイトのドメインでしかCookieを送信しない

    値を指定した場合、そのサブドメインでもCookieが送信さ れる 同じサブドメインで提供しているサービス同⼠でCookieを 共有しSSOするような場合に指定する
  5. 単純リクエスト 27 Preflightが発⽣しない単純リクエストとは • GET、HEAD、POST  • HTTPヘッダを追加、変更していない • Content-Typeが以下のいずれか application/x-www-form-urlencoded

    multipart/form-data text/plain 通常のformを使ってのPOSTは Preflight が発⽣しない つまり、Cross Originのアクセスが許可されてる
  6. Same Site 30 • Lax(デフォルト) ◦ トップナビゲーション(外部サイトからの遷移)のみ Cookieを送信する • Strict

    ◦ 3rd Party Cookieを送信しない • None ◦ 3rd Party Cookieを送信する Same Siteに設定できる値
  7. Same Siteのサブドメイン 32 ドメインのeTLD + 1が⼀致すると Same Site eTLDとはTLD(jp、com、net等)と実質的にTLDとし て扱われてる(co.jp、

    github.io等)を含めたドメイン 実質的なTLDの1つ左のドメインが⼀致している場合 Same Siteとなる 例) www.osaka.example.comと api.osaka.example.com は samesite
  8. Fetch Metadata Request Headers 36 ただし、全てのブラウザが送信するわけでない ブラウザからリクエスト元の情報が送られてくる Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site,

    Sec-Fetch-User とあり、それぞれをチェックするこ とでセキュリティを強化できる if (request.headers[“Sec-Fetch-Site”] !== “same-origin”) { return “deny” }
  9. 3rd Party Cookie規制後の世界 40 3rd Party Cookieの⽤途の中でも認証の連携など ユーザーにとって利便性の⾼い⽤途では 3rd Party

    Cookieを使えるようにしたい そのため、いくつかの条件で3rd Party Cookieが使え るよういろんな⽅法が模索されてる
  10. まとめ 45 • Cookieのセキュリティ ◦ 属性だけでは不⼗分 ◦ CSRFの対策 • Same

    Origin, Same Siteでデフォルトである程度防いでる ◦ サーバーサイドで追加で防御できる • 3rd Party Cookieは廃⽌の⽅向 ◦ CHIPSやStorage Access APIなど緩和策が出てきている
  11. 46

  12. 48