LoginSignup
61
43

More than 3 years have passed since last update.

CookieのSameSite属性 NoneとLaxの違い

Last updated at Posted at 2019-05-29

概要

CookieのSameSite属性について、 None(=属性なし)Laxではサーバで受け取るときにどう違うのか、実際に動かしてみます。

背景

Chromeに関するこの発表を受けて、CookieのSameSite属性を調べ始めたのですが、以下がわかりませんでした。

  • LaxStrictではなく、Noneとの違いは?
  • 付与の方法はわかったけど、受け取るときはどう違うの?

結論

先に結論だけ書くと、サーバでCookieを受け取る際、以下のように挙動が異なります。

  • SameSite=Lax のCookieは、サーバとCookieのドメインが一致していても受け取れない場合がある(POSTメソッドや画像、iframeなど)
  • SameSite=NoneのCookieは、サーバとCookieのドメインが一致していれば受け取れる(受け取れない場合がない)

検証

以下のCookieを持った状態で検証します。

Name Value Domain SameSite
a-lax 1 a.com
a-none 2 a.com Lax
b-lax 3 b.com
b-none 4 b.com Lax

SameSite=Laxを受け取れる場合

a.comの GET メソッドのフォームからb.comに遷移した場合、b.comのサーバで受け取れたのは以下のCookieです。

Name Value Domain SameSite
b-lax 3 b.com
b-none 4 b.com Lax

ドメインがa.comのCookieは受け取れませんが、b.comのものは2つとも受け取れました。
b.comからb.comに遷移した場合も同様です。(GETでもPOSTでも)

SameSite=Laxを受け取れない場合

一方、a.comの POST メソッドのフォームからb.comに遷移した場合、b.comのサーバで受け取れたのは以下のCookieだけです。

Name Value Domain SameSite
b-lax 3 b.com

Cookieのドメインがサーバと同じb.comであっても、SameSite=Laxのものは受け取れませんでした。
Noneのものは受け取れました。

このように、SameSite=None(属性なし)のCookieは受け取れるが、LaxのCookieは受け取れない場合がありました。
他にも以下のようなドメインをまたいだサブリクエストでは、SameSite=LaxのCookieは受け取れませんでした。

  • a.comにb.comの画像を埋め込む
  • a.comにb.comのiframeを埋め込む
61
43
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
43