📑

cookieのSameSite属性

2025/02/25に公開

Daily Blogging66日目

業務中にSameSite属性のところでハマったので情報整理してみた

SameSiteとは

mdn web docs

クロスサイトリクエストでクッキーを送信するかどうかを制御し、クロスサイトリクエストフォージェリ攻撃 (CSRF) に対するある程度の防御を提供します。

簡単にいうと、cookieの発行元ドメインと送信元ドメインが異なる場合に、cookieを送信するのか否かを制御する属性のこと

3つの値

属性には3種類あり、それぞれ制限の強さが違う

strict

1番制御が強い
ドメインが異なる場合、cookieは送信しない

lax

基本的にはstrictと同じだが、
GETの時はドメインが異なる場合でもcookieを送信できる。

セキュリティリスク軽減と使い勝手のバランスが良く、多くのブラウザのデフォルト値となっている。

none

もうなんも制御しない
いかなる状況でもcookie送っちゃう

noneに設定する場合は、Secure属性も付与する必要がある。

Secure属性
https://developer.mozilla.org/ja/docs/Web/HTTP/Cookies#cookie_へのアクセスをブロック

Secure 属性がついた Cookieは、HTTPSプロトコル上の暗号化されたリクエストでのみサーバーに送信されます。

各ブラウザのデフォルト値

SameSiteは明示的に値を指定しない場合、値が空になる。
空の時にどの値とみなすかがブラウザによって異なるよ

  • chrome(v80~)
    • lax
  • firefox(v69~)
    • lax
  • safari
    • none

safariの挙動

safariのデフォルト値はnoneだけど、
noneだからcookie送りたい放題ってわけじゃない。
safariは独自のトラッキング防止機能が搭載されている。
それがITP(Intelligent Tracking Prevention)
この機能により、場合によってはnoneでも cookieの送信が制限される可能性がある。

Discussion