"Aynı site" ve "aynı kaynak"

"Aynı site" ve "aynı kaynak" terimleri sık sık alıntılanan ancak genellikle yanlış anlaşılan terimlerdir. Örneğin sayfa geçişleri, fetch() istekleri, çerezler, açılış pop-up'ları, yerleştirilmiş kaynaklar ve iframe'ler bağlamında kullanılırlar. Bu sayfada, bunların ne olduğu ve birbirlerinden farkları açıklanmaktadır.

Köken
Kalkış noktasının yapısı

"Kaynak"; bir şema (ör. HTTP veya HTTPS olarak protokol olarak da bilinir), ana makine adı ve bir bağlantı noktası (belirtilirse) birleşimidir. Örneğin, https://www.example.com:443/foo URL'si verildiğinde "kaynak" https://www.example.com:443 olur.

"Same-origin" ve "cross-origin"

Aynı şema, ana makine adı ve bağlantı noktası kombinasyonuna sahip web siteleri "aynı kaynak" olarak kabul edilir. Diğer her şey "kaynaklar arası" olarak kabul edilir.

Kaynak A Kaynak B "Aynı kaynak" mı yoksa "çapraz kaynak" mı?
https://www.example.com:443 https://www.evil.com:443 Çapraz kaynak: farklı alan adları
https://example.com:443 Çapraz kaynak: farklı alt alan adları
https://giriş.example.com:443 Çapraz kaynak: farklı alt alan adları
http://www.example.com:443 Çapraz kaynak: farklı şemalar
https://www.example.com:80 Çapraz kaynak: farklı bağlantı noktaları
https://www.example.com:443 Same-origin: tam eşleme
https://www.example.com Same-origin: implicit bağlantı noktası numarası (443) ile eşleşir

Site

Site (TLD+1)
Bir URL'nin bir siteyi oluşturan bölümleri.

.com ve .org gibi üst düzey alanlar (TLD'ler), Root Zone Database'de listelenir. Önceki
örnekte "site"; şema, TLD ve alan adının kendisinden hemen önceki bölümünün (TLD+1 olarak adlandırılır) kombinasyonudur. Örneğin, https://www.example.com:443/foo URL'si verildiğinde "site" https://example.com olur.

Genel Son Ek Listesi ve eTLD

.co.jp veya .github.io gibi öğelere sahip alan adları için yalnızca .jp ya da .io kullanmak "siteyi" tanımlamak için yeterli değildir. Belirli bir TLD için kaydedilebilir alan adı düzeyini algoritmik olarak belirlemenin bir yolu yoktur. Buna yardımcı olmak için Genel Son Ek Listesi, etkili TLD'ler (eTLD'ler) olarak da adlandırılan herkese açık son eklerin bir listesini tanımlar. eTLD listesi publicsuffix.org/list adresinde bulunur.

eTLD içeren bir alanın "site" bölümünü tanımlamak için .com örneğiyle aynı uygulamayı uygulayın. Örneğin https://www.project.github.io:443/foo, şema https, eTLD .github.io ve eTLD+1 project.github.io şeklindedir. Dolayısıyla https://project.github.io, bu URL için "site" olarak kabul edilir.

Site (eTLD+1)
URL'nin eTLD'li bölümleri.

"aynı-site" ve "siteler arası"

Aynı şemaya ve aynı eTLD+1'e sahip web siteleri "aynı site" olarak kabul edilir. Farklı bir şema veya farklı bir eTLD+1'e sahip web siteleri, "siteler arası"dır.

Kaynak A Kaynak B "Aynı site" mi, yoksa "siteler arası" mı?
https://www.example.com:443 https://www.evil.com:443 Siteler arası: farklı alan adları
https://giriş.example.com:443 Aynı site: Farklı alt alan adları önemli değildir
http://www.example.com:443 Siteler arası: farklı şemalar
https://www.example.com:80 Aynı site: Farklı bağlantı noktaları önemli değildir
https://www.example.com:443 Aynı site: tam eşleme
https://www.example.com Aynı site: Bağlantı noktaları önemli değildir

"Şemasız aynı site"

şemasız aynı site

"Aynı site"nin tanımı, HTTP'nin zayıf kanal olarak kullanılmasını önlemek için sitenin bir parçası olarak URL şemasını içerecek şekilde değiştirildi. Şema karşılaştırması içermeyen eski "aynı site" kavramı artık "Şemasız aynı site" olarak adlandırılıyor. Örneğin, yalnızca eTLD+1 bölümü önemli olduğundan ve şema dikkate alınmadığından http://www.example.com ve https://www.example.com, şemasız aynı site olarak kabul edilir ancak aynı site değildir.

Kaynak A Kaynak B "Şemasız aynı site" mi yoksa "siteler arası" mı?
https://www.example.com:443 https://www.evil.com:443 Siteler arası: farklı alan adları
https://giriş.example.com:443 Şemasız aynı site: Farklı alt alan adları fark etmez
http://www.example.com:443 Şemasız aynı site: Farklı şemalar fark etmez
https://www.example.com:80 Şemasız aynı site: Farklı bağlantı noktaları önemli değildir
https://www.example.com:443 Şemasız same-site: tam eşleme
https://www.example.com Şemasız aynı site: Bağlantı noktaları önemli değildir

İsteğin "aynı site", "aynı kaynak" veya "siteler arası" olup olmadığını kontrol etme

Tarayıcı Desteği

  • 76
  • 79
  • 90
  • 16,4

Kaynak

Tüm modern tarayıcılar, istekleri Sec-Fetch-Site HTTP üst bilgisi ile gönderir. Başlık aşağıdaki değerlerden birine sahip olmalıdır:

  • cross-site
  • same-site (düzenli şekilde aynı siteyi ifade eder)
  • same-origin
  • none

İsteğin aynı site mi, aynı kaynak mı yoksa siteler arası mı olduğunu belirlemek için Sec-Fetch-Site değerini inceleyebilirsiniz.

Sec-Fetch-Site üst bilgisinin değerine makul ölçüde güvenebilirsiniz, çünkü: