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

今時のCookie事情

sutetotanuki
July 31, 2024
390

 今時のCookie事情

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