1. このページの目的
サードパーティ・クッキーと、Samesite=None のテストを行う。
2. 何を行うか?
- 3rd Party Cookie Test にアクセスして、クッキーを発行させる。
- 本ページにアクセスして、1のクッキーが送信されるかチェックする。
- 以下の
<iframe>
タグで、3rd-cookie-test.glitch.me
にリクエストが送信されるようにしている。このリクエスト内でクッキーも送信されるはず。
- 以下の
追加
- 3rd Party Cookie Test にアクセスして、どのクッキーが送信されるか調べる(top-level navigation のテスト)。
サーバー側のコード
- server.js – 3rd-cookie-test にアクセスすると見ることができる。
- その中から、クッキーを発行するコードを以下に抜粋する。
response.cookie('name1', 'type1', {maxAge:60000});
response.cookie('name2', 'type2', {maxAge:60000, httpOnly:false});
response.cookie('name3', 'type3', {maxAge:60000, httpOnly:true});
response.cookie('name4', 'type4', {maxAge:60000, httpOnly:true, sameSite:'None'});
response.cookie('name5', 'type5', {maxAge:60000, httpOnly:true, sameSite:'None', secure:true});
その後、以下も追加した。
response.cookie('name4a', 'type4a', {maxAge:60*60*1000, httpOnly:true, sameSite:'Lax'});
response.cookie('name4b', 'type4b', {maxAge:60*60*1000, httpOnly:true, sameSite:'Strict'});
response.cookie('name5a', 'type5a', {maxAge:60*60*1000, httpOnly:true, sameSite:'Lax', secure:true});
response.cookie('name5b', 'type5b', {maxAge:60*60*1000, httpOnly:true, sameSite:'Strict', secure:true});
3. 結果その1
発行されたクッキーを Chrome DevTools で確認する。
今回発行したクッキーは以下の5種類である。
結論
環境:Chrome 77.0.3865.120
<iframe>
タグによるリクエストによって、これらのクッキーすべてが送信された。
- ブラウザの設定で、サードパーティクッキーは許可してある。
- 現時点の Chrome では、(SameSite属性がない)サードパーティ・クッキーも送信してくれる。
- 現時点の Chrome では、(SameSite=None 且つ Secure属性がない) サードパーティ・クッキーも送信してくれる。
- 現時点の Chrome では、(SameSite=None 且つ Secure属性がある) サードパーティ・クッキーはもちろん送信してくれる。
- 「SameSite=None と Secure という属性がないと、将来的に Chrome ではクッキーが送信されなくなる」という警告が表示された。
- また、「SameSite=None はあるが Sacure属性がない」という警告も表示された。これらの警告は想定内である。
4. 結果その2(2020-02-14)
(1) Chrome 80 で same-site-by-default-cookies
フラグを有効にした場合
Chrome 80.0.3987.106 で same-site-by-default-cookies
フラグを有効にして試してみた。(2020年2月17日の週から適用が始まるらしい)
(現時点ではデフォルトで SameSite=Lax 扱いにならないため)
まずは、Glitch サイトにアクセスしたり、本ページの <iframe>
タグを通じていろいろなクッキーをセットさせる。
<iframe>
を通じて外部ドメインにアクセスしたときにSet-Cookie
されたクッキーのうち、Secure
属性とSameSite=None
がセットされていないものは、保存されない。
本ページをリロードして、どのクッキーが外部ドメイン(3rd-cookie-test.glitch.me
) に送られたかを確かめる。
明示的に SameSite=None
を指定したクッキーのみが送信された。
(2) Chrome 80 で same-site-by-default-cookies
フラグをデフォルトにした場合
<iframe>
を通じて得た、SameSite
属性なしのクッキーも保存されている(Name が name6 のクッキー)。
- 明示的に
SameSite=Lax
を指定したクッキー以外は送信されている。
(3) Firefox 73
SameSite
属性を指定しないクッキーも、SameSite=None
を指定いたクッキーも値が「Unset」になっている。- サーバー側からいろいろな属性のパターンのクッキーをセットしているのだが、すべて保存されている。
- 明示的に
SameSite=Lax
を指定したクッキー以外は送信されている。
5. メモ2020-07-29)
- 2020-07-28 から、とうとう SameSiteの扱いが変わり始めたようだ(新型コロナで延期されていた)。
- さっきまで、従来のクッキーが送信されていたのに、Chrome のバージョンを上げたら送信されなくなっていた。
- Google Chrome 84.0.41.47.105