subdomain.example.comは、example.comが読み取れるCookieを設定できますか?


26

これを決定するのが非常に難しいとは信じられません。

RFCを読んでも、subdomain.example.comのサーバーがexample.comが読み取れるCookieを設定できるかどうかはわかりません。

subdomain.example.comは、Domain属性が.example.comであるCookieを設定できます。RFC 2965は、このようなCookieはexample.comに送信されないことを明示的に示しているように見えますが、Domain = example.comを設定すると、.example.comのようにドットが付加されると同様に述べています。まとめると、これは、example.comがDomain = example.comでCookieを設定して返す場合、そのCookieを取り戻さないと言っているようです!それは正しくありません。

誰がルールが本当に何であるかを明確にすることはできますか?


この質問は、尋ねられたときにクローズ/マイグレーションされているはずですが、多くの注目を集めたので、クローズするのではなくロックします。stackoverflow.com/questions/3089199 / ...を参照してください。正しいサイトで、だまされやすい人を探してください。
クリスS

回答:


30

あなたが読んだ同じRFC2109から引用:

       * Domain = .foo.comのrequest-host x.foo.comからのSet-Cookieは
         受け付けます。

subdomain.example.comCookieを設定でき.example.comます。ここまでは順調ですね。

       該当するcookie-valuesの選択には、次の規則が適用されます
       ユーザーエージェントが持つすべてのCookieの中。

       ドメイン選択
            オリジンサーバーの完全修飾ホスト名はドメインと一致する必要があります
            Cookieのドメイン属性

ドメインマッチはありますか?

   * AはFQDN文字列であり、NBという形式を持ちます。Nは空でない名前です
     文字列、Bの形式は.B '、B'はFQDN文字列です。(だから、xycom
     domain-matchs .y.com、y.comとは一致しません。)

しかし、現在の定義でexample.comはドメインマッチしません.example.com。しかしwww.example.com(またはドメイン内の他の「空でない名前」)はそうなります。このRFCは理論上、RFC2965によって廃止されました。RFC2965はSet-Cookie2操作のドメインに先頭のドットを強制することを指示しました。

@Tonyが指摘したように、より重要なのは現実の世界です。実際のユーザーエージェントが何をしているのかを見るには、

Firefox 3のnsCookieService.cpp

そして

Chromeのcookie_monster.cc

実際のサイトがやっていることへの展望について、一緒に遊んでみてくださいwget使用して--save-cookies--load-cookiesと、--debug何が起こっているか見るために。

実際、ほとんどのサイトはSet-Cookie古いRFC仕様の「Host」値との組み合わせを使用しており、暗黙的に先頭のドットなし(twitter.comのように)またはドメイン値の設定(先頭のドット付き)とリダイレクトを使用しています。www.example.comgoogle.comのように)サーバーに。


では、www.example.comとexample.com(一般に同じサイトを指す)はどのように同じCookieを使用しますか?主要な。ほとんどのブラウザでは必要ありません。そうしないと、この一般的な使用法は機能しません。
ジェームズライアン

先頭のドットは、最新のRFCによってのみ強制されます。example.comは、「example.com」および「.example.com」のCookieを設定できます。後者はwww.example.comで読むことができます。表示されているwgetコマンドを使用して、何が起こっているのかを確認してください。
メディナ

@medina、ユーザーはx1.yzでcookieを設定し、x2.yzでそれを読み取ることができますか?
パセリエ

あなたはのためにクッキーを設定し@Pacerierのみ(1)場合y.z、ユーザーエージェントの実装RFC 6265.及び(2)
マイケル・ハンプトン

@MichaelHampton、ブラウザはRFC 6265を実装していませんか?
パセリエ

2

ブラウザーがRFC 6265を実装している場合、現在のブラウザーはこの時点で実行する必要があります.example.comが、設定されたCookie の先頭のドットは無視され(セクション5.2.3)、Cookieはネイキッドドメインとすべてのドメインに送信されますサブドメイン。

古いブラウザから大量のトラフィックがある場合は、この動作に依存しないでください。このRFCの日付は2011年のみです。


1

それは不可能であるべきです。ただし、あなたが言ったように、これは広く文書化された標準ではないため、使用しているソフトウェアの種類に依存します。

最新のブラウザのほとんどは、定義済みの「Webセキュリティモデル」に準拠しています。このモデルは、Cookieなどのセキュリティに関するブラウザの動作(具体的には、特定のWebサイトへの返信方法)を効果的に管理します。このモデルには、「ブラウザは、設定していないドメイン名にクッキーを送信しない」というルールもあります。

つまり、domain.comはjs.domain.comのCookieを設定できるはずです。ただし、js.domain.comは、自身に対してのみCookieを設定できます。ただし、これは使用しているブラウザによって異なります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.