Domain属性 【Domain attribute】
概要
Domain属性(Domain attribute)とは、WebサーバとWebブラウザの間でやり取りされるCookie(クッキー)に指定できる属性の一つで、指定のドメイン名を持つWebサーバにのみCookieを送信するよう制限するもの。CookieはWebコンテンツの伝送に用いられるHTTP(Hypertext Transfer Protocol)に用意された仕組みの一つで、サーバからの応答時に任意の文字列データを付与し、クライアントがこれを永続的に保存してサーバへのリクエスト時に毎回送信する。サーバがクライアントを識別したり、クライアント側で必要な情報を保管することができる。
Domain属性はサーバからのCookie送信時に設定される属性の一つで、HTTPヘッダのSet-Cookieフィールドの設定値の一部として「;Domain=www.example.jp」のように指定する。ブラウザはDomain属性で指定されたドメイン以外へはCookieの内容を送ってはならない。
ドメイン名が一致するかどうかの判定は、サブドメイン単位で後方一致となる。例えば、Domain属性として「example.jp」が設定されたら、ブラウザは「https://example.jp」にも「https://www.example.jp」にもCookieを送信するが、「www.example.jp」が設定されたら「https://example.jp」には送信されない。
サーバが指定できるドメイン名はサーバ自身のドメイン名とその親ドメインのみとなる。例えば、「https://www.example.jp」はDomain属性として「www.example.jp」や「example.jp」を設定することができるが、「https://example.jp」が設定できるのは「example.jp」のみとなる。
公共的なドメインへの制限
親ドメインが「co.jp」「com」など所有者のいない公共的なドメイン名の場合は指定することができない。あるドメインが公共的か否かは運営実態によるため技術的、機械的に判別することはできず、インターネット上に公開されている「Public Suffix List」というリストと照合する。
新しいトップレベルドメインや、顧客にサブドメインを貸し出すネットサービスなどの場合は、サービス開始からこのリストに掲載されるまでに時間差が生じることがあるため、他人のドメインでも有効なDomain属性を設定できてしまうことがある。これを「Cookie Monster問題」という。