📑
cookieのSameSite属性
Daily Blogging66日目
業務中にSameSite属性のところでハマったので情報整理してみた
SameSiteとは
クロスサイトリクエストでクッキーを送信するかどうかを制御し、クロスサイトリクエストフォージェリ攻撃 (CSRF) に対するある程度の防御を提供します。
簡単にいうと、cookieの発行元ドメインと送信元ドメインが異なる場合に、cookieを送信するのか否かを制御する属性のこと
3つの値
属性には3種類あり、それぞれ制限の強さが違う
strict
1番制御が強い
ドメインが異なる場合、cookieは送信しない
lax
基本的にはstrictと同じだが、
GETの時はドメインが異なる場合でもcookieを送信できる。
セキュリティリスク軽減と使い勝手のバランスが良く、多くのブラウザのデフォルト値となっている。
none
もうなんも制御しない
いかなる状況でもcookie送っちゃう
noneに設定する場合は、Secure属性も付与する必要がある。
Secure属性
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