CHIPSを使う作業ログ
CHIPSを読み書きするための作業ログ
2023/05/21 できたー
1. DevContainerの作成
2. /etc/hostsの編集
コンテナで内部的に使いたいドメインを指定する
...?
ドメインごとにPartitioningされている...?
例えばyoutube.comというドメインをローカルのDNSに設定したら、その偽YouTubeにもPartitioningされたCookieが渡るのか?
IPアドレスは?
3. Webサーバーを立てる
FastAPIで2つ
4.
やめた
ngrokを使用中
あとでchatgptとの問答からまとめる
ちょっと問題を記録
http.cookies.CookieError: Invalid attribute 'partitioned'
現在のhttp.cookiesの実装ではPartitioned属性が利用できないのかもしれないな...
ようやくPartitionedなCookieを作れた。
https://scrapbox.io/files/6469f7be3bfc36001cdf8282.png
localhost:8000へのアクセスでは、このCookieが表示される。
code:output_8000.txt
/
Received cookie: abuse_interstitial=410f-90-149-246-145.ngrok-free.app
Received cookie: _Host-lastAccess=2023-05-21T19:50:48
127.0.0.1 - - 21/May/2023 19:52:47 "GET / HTTP/1.1" 200 -
(追記)localhost:8000での画像撮り直し
https://scrapbox.io/files/6469fa021482d9001b1f2f2d.png
次に、localhost:8000を埋め込んでいるWebサイトlocalhost:7000にアクセスする。
code: output_8000_embed_7000.txt
/
Cookie is empty
127.0.0.1 - - 21/May/2023 19:54:13 "GET / HTTP/1.1" 200 -
この場合、Cookieは空である。
abuse_interstitialが邪魔だな...
これは正しくない。ブラウザはngrok上のURLとlocalhost:8000とを区別する。
localhost:7000側で埋め込むURLをngrok上のものに変更した。
(追記)正しいログ
code:output_8000_embed_7000_new.txt
/
Received cookie: abuse_interstitial=410f-90-149-246-145.ngrok-free.app
127.0.0.1 - - 21/May/2023 20:00:39 "GET / HTTP/1.1" 200 -
https://scrapbox.io/files/6469f94c857bf7001c4476c2.png
localhost:7000にアクセスしたとき、開発者ツールの表示はこのようになった。
Partitioningされていなければ、本来_Host-lastAccessも表示されているはずである。
→ 試してみよう
いやこの挙動は正しくないだろう
Partitioningされているなら、別の値がセットされているはず
これあれだわ
SameSite=Strictだからだ
SameSite属性がStrictのとき、クロスサイトリクエストがブラウザから飛んできたとき、そのレスポンスCookieはブラウザにセットされない
ブラウザがクロスサイトリクエストをするときにサーバー側にこのCookieが送信されることはあるのか?
含まれないとのこと(ChatGPT)
ならこの予想は正しそうだ
SameSite=Strictを外そう
Partitionedを外してみる
https://scrapbox.io/files/6469faeba79555001c10eb71.png
これは外した時のlocalhost:8000
次にPartitionedを外した状態でのlocalhost:7000を見る
ちなみにChromeでPartitioned機能を外すとどうなる?
FirefoxはすべてをPartitioningするという話だったけど、実際そうなの?
あれはCHIPSに対応するという声明だったか?
Firefoxの場合、別にCHIPSに対応しているか否かにかかわらず全部Partitioningしてそう
Google?はCookieがPartitioningされることを想定していないWebサイトが壊れる、みたいな主張をしてたけど
FirefoxとGoogle、立場が大きく違うだろうな
クロスサイトにおけるSameSiteとPartitionedの比較
table:SameSiteとPartitioned
項目 SameSite Partitioned
ブラウザからの送信 されない 別物が送信される
サーバーからのセット されない されるけど別物
つまり、SameSiteを指定されたCookieは、クロスサイトでは読み書きが一切できない。
Partitionedは、クロスサイトでも読み書きできるが別物が使われる。
クロスサイトで状態が使えないというのは不便。
なので今までの開発者はサードパーティCookieを利用してきた。
仕方なくそうしたのかも
でもトラッキングに使われてしまうよね
今後、クロスサイトでも状態を使うニーズに応えて、状態をPartitioningできるようにしよう
これがCHIPS
うん、SameSite=Noneを明示的に指定すると、上手く行った
これでようやく、PartitioningされたCookieになった
埋め込むとき:
https://scrapbox.io/files/646a426ca79555001c12f86c.png
トップレベルサイトで表示するとき:
https://scrapbox.io/files/646a427d5272ec001bb630ac.png
実際にそれぞれのWebページをリロードしてサーバーにCookieを送信すると、これらは異なる状態であることが確認できた。