Cookie
サーバーがブラウザにデータを保存させられる仕組み、またはそのデータのこと
MDN: https://developer.mozilla.org/ja/docs/Web/HTTP/Cookies
Cookieはドメインごとに紐付けられて格納されている
ドメインAからドメインBのCookieにアクセスすることはできない
ドメインAのクッキーをドメインBに送信することはない
サーバーはSet-Cookieヘッダをレスポンスに付与することでブラウザにCookieを保存させることができる
あるドメインへHTTPリクエストを送信する場合、ブラウザはCookieヘッダを付与してサーバーにCookieを伝える
SameSite属性
SiteはOriginとは違う事に注意
ブラウザのデフォルトはLax
ただし、Chrome/FireFoxでは生成されてから2分はNoneのままになるという挙動がある
https://blog.tokumaru.org/2022/01/impact-conditions-for-no-CSRF-protection-sites.html
Strict: 同じサイトからのリクエストのみCookieの付与を許可する
Lax: Strictに加えて、top-level navigationによるGET/HEAD/IOPTIONリクエストのみ許可する
top-level navigation: URLの変更を伴う遷移のこと (詳しい定義追ってない)
<a>タグや<form>タグ
None: いかなるリクエストもCookieを付与する
Noneの場合はSecure属性が必須となる
RFC: https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#name-samesite-cookies
Path属性
Domain属性
Cookie Bomb
TODO
Cookie Toss
TODO
Cookie Smuggling
TODO
資料
PortSwigger: https://portswigger.net/web-security/csrf/bypassing-samesite-restrictions