"same-site" und "same-origin" verstehen

„same-site“ und „same-origin“ werden häufig zitiert, aber oft missverstanden. Sie werden beispielsweise im Zusammenhang mit Seitenübergängen, fetch()-Anfragen, Cookies, Pop-ups, eingebetteten Ressourcen und iFrames erwähnt.

Ursprung

Ursprung

Der „Ursprung“ ist eine Kombination aus einem Schema (auch Protokoll, z. B. HTTP oder HTTPS), eines Hostnamen und eines Ports (falls angegeben). Bei der URL https://www.example.com:443/foo ist der „origin“ z. B. https://www.example.com:443.

„same-origin“ und „cross-origin“

Websites mit einer Kombination aus demselben Schema, Hostnamen und Port werden als „Same-Origin“ betrachtet. Alles andere wird als ursprungsübergreifend betrachtet.

Abflugort A Abflugort B Erklärung, ob die Abfahrtsorte A und B „same-origin“ oder „cross-origin“ sind
https://www.example.com:443 https://www.evil.com:443 ursprungsübergreifend: verschiedene Domains
https://example.com:443 ursprungsübergreifend: verschiedene Subdomains
https://login.beispiel.de:443 ursprungsübergreifend: verschiedene Subdomains
http://www.beispiel.de:443 ursprungsübergreifend: verschiedene Schemas
https://www.beispiel.de:80 Cross-Origin: verschiedene Ports
https://www.beispiel.de:443 same-origin: genau passend
https://www.example.com same-origin: Implizite Portnummer (443) stimmt überein

Website

Website (TLD+1)

Top-Level-Domains (TLDs) wie .com und .org werden in der Stammzonendatenbank aufgeführt. Im Beispiel oben ist "site" die Kombination aus dem Schema, der TLD und dem Teil der Domain unmittelbar davor (er: TLD+1). Wenn die URL beispielsweise https://www.example.com:443/foo lautet, ist die „Website“ https://example.com.

Liste der öffentlichen Suffixe und eTLD

Bei Domains, die Dinge wie .co.jp oder .github.io enthalten, reicht es nicht aus, nur .jp oder .io zu verwenden, um die „Website“ zu identifizieren. Es gibt keine Möglichkeit, die Ebene der registrierfähigen Domains für eine bestimmte TLD mithilfe eines Algorithmus zu bestimmen. Aus diesem Grund wurde eine Liste öffentlicher Suffixe erstellt, die in der Liste der öffentlichen Suffixe definiert sind. Diese öffentlichen Suffixe werden auch als effektive TLDs (eTLDs) bezeichnet. Die Liste der eTLDs wird unter publicsuffix.org/list verwaltet.

Um den „Website“-Teil einer Domain mit einer eTLD zu ermitteln, gehen Sie genauso vor wie im Beispiel mit .com. Nehmen wir https://www.project.github.io:443/foo als Beispiel: Das Schema ist https, die eTLD ist .github.io und die eTLD+1 ist project.github.io. https://project.github.io wird also als „Website“ für diese URL betrachtet.

Website (eTLD+1)

„same-site“ und „cross-site“

Websites mit demselben Schema und derselben eTLD+1 gelten als „same-site“. Websites mit einem anderen Schema oder einer anderen eTLD+1 sind „websiteübergreifend“.

Abflugort A Abflugort B Erklärung, ob Ursprung A und Ursprung B „same-site“ oder „cross-site“ sind
https://www.example.com:443 https://www.evil.com:443 websiteübergreifend: verschiedene Domains
https://login.beispiel.de:443 same-site: unterschiedliche Subdomains spielen keine Rolle
http://www.beispiel.de:443 websiteübergreifend: verschiedene Schemas
https://www.beispiel.de:80 same-site: unterschiedliche Ports spielen keine Rolle
https://www.beispiel.de:443 same-site: genau passend
https://www.example.com same-site: Ports spielen keine Rolle

„Schemalose Website derselben Website“

schemalose Same-Site-Website

Die Definition von „same-site“ wurde weiterentwickelt, um das URL-Schema als Teil der Website zu betrachten, um zu verhindern, dass HTTP als wechslungsreicher Channel verwendet wird. Das ältere Konzept von „same-site“ ohne Schemavergleich heißt jetzt „schemaless same-site“. Beispielsweise werden http://www.example.com und https://www.example.com als schemalose Same-Site-, aber nicht als Same-Site-Website betrachtet, da nur der eTLD+1-Teil relevant ist und das Schema nicht berücksichtigt wird.

Abflugort A Abflugort B Erklärung, ob die Ursprünge A und B „schemaloser Same-Site“ sind
https://www.example.com:443 https://www.evil.com:443 websiteübergreifend: verschiedene Domains
https://login.beispiel.de:443 Schemalose Website für dieselbe Website: Unterschiedliche Subdomains spielen keine Rolle
http://www.beispiel.de:443 Schemalose Website derselben Website: Unterschiedliche Schemas spielen keine Rolle
https://www.beispiel.de:80 schemeless-same-site: unterschiedliche Ports spielen keine Rolle
https://www.beispiel.de:443 schemeless-same-site: genau passend
https://www.example.com schemeless-same-site: Ports spielen keine Rolle

Prüfen, ob eine Anfrage „same-site“, „same-origin“ oder „cross-site“ ist

Alle modernen Browser (Safari unterstützen Demnächst) senden Anfragen zusammen mit einem Sec-Fetch-Site-HTTP-Header. Der Header hat einen der folgenden Werte:

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

Wenn Sie den Wert von Sec-Fetch-Site untersuchen, können Sie feststellen, ob die Anfrage „same-site“, „same-origin“ oder „cross-site“ ist.