CookieのSameSite属性

概要 Cookieに新たにSameSite属性というものが提案され、主要なブラウザで実装が進んでいる。 かつてはFirst-Party-Only Cookieと呼ばれていたもの。 https://tools.ietf.org/html/draft-west-first-party-cookies-05 クロスオリジンへのリクエスト送信時にCookieを付与しないことで、予期せぬ形での情報漏洩を緩和するのが目的。 CSRFを防げるという話ではなく、あくまで緩和という感じ。 このエントリを書いている段階で、Safari以外の主要ブラウザでは実装済みという感じ。 https://caniuse.com/#feat=same-site-cookie-attribute SameSite属性の値と挙動 値は lax と strict の2種類。 Set-Cookie: test=1; path=/; samesite=strict strict はあらゆるクロスオリジンへのリクエストにそのCookieは付与されなくなる。 aタグなどで遷移するだけでもCookieは付与されない。 lax は付与される場合と付与されない場合がある。 top-levelリクエストで、かつ、GETリクエストであるものにCookieが付与される。 ただし、 img や iframe 、 XMLHttpRequests などでは付与されない。 表にすると以下のような感じ。( ✅ : Cookieが送信される、❌ : Cookieが送信されない ) HTML lax strict <a href="http://example.com/"> ✅ ❌ <form method="get" action="http://example.com/" > ✅ ❌ <form method="post" action="http://example.