Skip to content
学習する 測定する ブログ Case studies 概要
このページ内
  • オリジン
    • 「same-origin」と「cross-origin」
  • サイト
    • 「same-site」と「cross-site」
    • 「スキームフル same-site」
  • リクエストが「same-site」、「same-origin」、「cross-site」のいずれであるかを確認する方法

「same-site」と「same-origin」を理解する

Apr 15, 2020 — 更新済み Jun 10, 2020
Available in: Español, 한국어, Português, Русский, 中文, English
Appears in: 安全とセキュリティ
Eiji Kitamura
Eiji Kitamura
TwitterGitHubHomepage
このページ内
  • オリジン
    • 「same-origin」と「cross-origin」
  • サイト
    • 「same-site」と「cross-site」
    • 「スキームフル same-site」
  • リクエストが「same-site」、「same-origin」、「cross-site」のいずれであるかを確認する方法

「same-site」と「same-origin」は頻繁に引用されますが、誤解されることもよくあります。例えば、ページ切り替えコンテキスト、 fetch()リクエスト、Cookies、開くポップアップ、埋め込みリソース、iframeで言及されています。

オリジン #

Origin

「オリジン」は、スキーム(プロトコルとも呼ばれ、 HTTPやHTTPSなど)、ホスト名、およびポート(指定されている場合)の組み合わせです。たとえば、URLがhttps://www.example.com:443/foo場合、「origin」はhttps://www.example.com:443です。

「same-origin」と「cross-origin」 #

同じスキーム、ホスト名、ポートの組み合わせを持つWebサイトは、「同一オリジン」と見なされます。それ以外はすべて「オリジン間」と見なされます。

オリジンAオリジンBオリジンAとオリジンBが「same-origin」か「cross-origin」かについての説明します。
https://www.example.com:443https:// www.evil.com:443cross-origin:異なるドメイン
https:// example.com:443cross-origin:異なるサブドメイン
https:// login .example.com:443cross-origin:異なるサブドメイン
http://www.example.com:443cross-origin:異なるスキーム
https://www.example.com:80cross-origin:異なるポート
https://www.example.com:443same-origin:完全一致
https://www.example.comsame-origin:暗黙のポート番号(443)が一致する

サイト #

Site

.comや.orgなどのトップレベルドメイン(TLD)は、ルートゾーンデータベースにリストされています。上記の例では、「サイト」はTLDとその直前のドメインの一部の組み合わせです。 https://www.example.com:443/foo / fooのURLが与えられた場合、「サイト」はexample.comです。

しかし、.co.jpや.github.ioなどのドメインの.jpまたは.io TLDを使用するだけでは、「サイト」を識別できるほど正確ではありません。また、特定のTLDの登録可能ドメインのレベルをアルゴリズム的に決定する方法はありません。そのため、「有効なTLD」(eTLD)のリストが作成されました。これらは、Public Suffix Listで定義されています。 eTLDのリストは、publicsuffix.org/listで管理されています。

サイト名全体はeTLD + 1として知られています。たとえば、URLがhttps://my-project.github.io場合、eTLDは.github.ioあり、eTLD + 1はmy-project.github.ioであり、これは「サイト」と見なされます。つまり、eTLD + 1は有効なTLDであり、その直前のドメインの一部です。

eTLD+1

「same-site」と「cross-site」 #

同じeTLD + 1を持つWebサイトは、「same-site」と見なされます。異なるeTLD + 1を持つWebサイトは、「cross-site」です。

オリジンAオリジンBオリジンAとオリジンBが「same-site」か「cross-site」かについての説明
https://www.example.com:443https:// www.evil.com:443cross-site:異なるドメイン
https:// login .example.com:443same-site:異なるサブドメインは重要ではありません
http://www.example.com:443same-site:異なるスキームは重要ではありません
https://www.example.com:80same-site:異なるポートは重要ではありません
https://www.example.com:443same-site:完全に一致します
https://www.example.comsame-site:ポートは重要ではありません

「スキームフル same-site」 #

schemeful same-site

「same-site」の定義は、HTTPが脆弱なチャネルとして使用されないように、 URL スキームをサイトの一部として考慮するように展開されています。ブラウザがこの解釈に移行すると、古い定義を指す場合は「スキームレス same-site」、より厳しい定義を指す場合は「スキームフル same-site」という表記を目にすることがあります。その場合、スキームが一致しないためhttp://www.example.comとhttps://www.example.comはcross-siteと見なされます。

オリジンAオリジンBオリジンAとオリジンBが「スキームフル same-site」であるかどうかの説明
https://www.example.com:443https:// www.evil.com:443cross-site:異なるドメイン
https:// login .example.com:443スキームフル same-site:異なるサブドメインは重要ではありません
http://www.example.com:443cross-site:異なるスキーム
https://www.example.com:80スキームフル same-site:異なるポートは重要ではありません
https://www.example.com:443スキームフル same-site:完全に一致します
https://www.example.comスキームフル same-site:ポートは重要ではありません

リクエストが「same-site」、「same-origin」、「cross-site」のいずれであるかを確認する方法 #

ChromeはSec-Fetch-Siteheaderでリクエストを送信します。 2020年4月の時点から、 Sec-Fetch-Siteをサポートするブラウザがありません。これは、より大きなFetch Metadata RequestHeaders提案の一部です。headerには、次のいずれかの値が含まれます。

  • cross-site
  • same-site
  • same-origin
  • none

Sec-Fetch-Siteの値を調べることで、リクエストが「same-site」、「same-origin」、「cross-site」のいずれであるかを判断できます(「schemeful-same-site」は Sec-Fetch-Site でキャプチャされません)。

セキュリティ
最終更新: Jun 10, 2020 — 記事を改善する
Return to all articles
共有する
サブスクライブする

Contribute

  • バグを報告する
  • ソースを表示する

関連性のあるコンテンツ

  • developer.chrome.com
  • Chrome のアップデート
  • Web Fundamentals
  • ケーススタディ
  • ポッドキャスト
  • ショー

接続する

  • Twitter
  • YouTube
  • Google Developers
  • Chrome
  • Firebase
  • Google Cloud Platform
  • すべての製品
  • 利用規約とプライバシーポリシー
  • コミュニティガイドライン

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies.