SameSiteは、別サイトを起点とするリクエストへCookieを付けるかどうかを制御します。
主要な設定は次の3種類です。
| 設定 | クロスサイト送信 | 特徴 |
|---|---|---|
Strict | 原則送信しない | 最も強いが外部リンクからの遷移で不便が出る |
Lax | 一部のトップレベルGETで送信 | 利便性と安全性のバランス |
None | 送信する | Secureが必須。CSRF対策を別途行う |
ChromeではSameSite未指定CookieにLax相当を適用する仕組みが導入され、単純なクロスサイトPOST型CSRFは成功しにくくなりました。
しかし、SameSiteは「同一オリジン」ではなく「同一サイト」を基準にします。
例えば、次の2つは異なるオリジンですが、同一サイトとして扱われる可能性があります。
https://app.example.com
https://upload.example.com
upload.example.comにXSSやオープンリダイレクトなどの脆弱性があると、app.example.comのSameSite防御を迂回する足場になる場合があります。
現代では、単純なHTMLフォーム型だけでなく、次のような境界領域が重要です。