ユーザーのセッションの開始時に、XSRF/CSRF 用に設定された Cookie があります。ある時点で、ユーザーは別のドメイン (支払いなど) に移動し、いくつかのアクションを実行して、ドメインに移動します。私たちのドメインに戻ると、Firefox と Safari は同じサイトとして設定された Cookie を読み取ることができません: Strict、Chrome はできます。Chrome と Firefox (ただし Safari ではない) の場合、Cookie の開発者ツール セクションに表示されます。
MDNの同じサイトの説明では、将来のリクエスト時に Cookie がリクエスト ヘッダーで送信されることを説明しています。これは、3 つのブラウザすべてに当てはまります。説明が決定的でないのは、document.cookie を介してこの Cookie を読み取ることができるかどうかです。Firefox、Safari、および Chrome では「Lax」Cookie を読み取ることができますが、「Strict」Cookie を読み取ることができるのは Chrome のみです。これは、ページの更新時にも当てはまりますが、新しいタブを開いたとき (つまり、ナビゲーションのみ) には当てはまりません。
これは Safari と Firefox のバグですか、それとも Chrome のバグですか? それとも仕様が決定的でないのでしょうか? 仕様 (w3?) はどうなりますか?
test.internalsite.com
これは、2 つの vhostsとを備えた Web サーバーとtest.externalsite.com
、いくつかの PHP を使用したこれらのページを使用して、ローカルで簡単に再作成できます。
<?php
setcookie("CSRFLax", "hiLax", array("path"=>"/", "samesite"=>"Lax", "domain"=>"test.internalsite.com"));
setcookie("CSRFStrict", "hiStrict", array("path"=>"/", "samesite"=>"Strict", "domain"=>"test.internalsite.com"));
?>
<html>
<body>External site
<p><a href="http://test.externalsite.com">Go to External site</a></p>
<p>Document cookie: <script>document.write(document.cookie);</script></p>
</body>
</html>
と
<html>
<body>External site
<a href="http://test.internalsite.com">Go to internal Site</a>
</body>
</html>