"Aynı site" ve "aynı kaynak"

"Aynı site" ve "aynı kaynak" terimleri sıklıkla kullanılsa da genellikle yanlış anlaşılır. Örneğin, sayfa geçişleri, fetch() istekleri, çerezler, pop-up'ların açılması, yerleşik kaynaklar ve iFrame'ler bağlamında kullanılırlar. Bu sayfada, bu özelliklerin ne olduğu ve birbirlerinden nasıl farklı oldukları açıklanmaktadır.

Köken

Köken
Kaynak yapısı.

"Kaynak", bir şema (protokol olarak da bilinir, ör. HTTP veya HTTPS), bir ana makine adı ve (belirtilmişse) bir bağlantı noktası kombinasyonudur. Örneğin, https://www.example.com:443/foo URL'si için "origin" değeri https://www.example.com:443 olur.

"Aynı kaynak" ve "farklı kaynak"

Şema, ana makine adı ve bağlantı noktası kombinasyonu aynı olan web siteleri "aynı kaynak" olarak kabul edilir. Diğer tüm kaynaklar "kaynaklar arası" olarak kabul edilir.

Kaynak A Kaynak B "Aynı kaynak" mı yoksa "farklı kaynak" mı?
https://www.example.com:443 https://www.evil.com:443 Kaynaklar arası: farklı alanlar
https://example.com:443 Kaynaklar arası: farklı alt alanlar
https://login.example.com:443 Kaynaklar arası: farklı alt alanlar
http://www.example.com:443 Kökler arası: farklı şemalar
https://www.example.com:80 Kaynaklar arası: farklı bağlantı noktaları
https://www.example.com:443 Aynı kaynak: tam eşleme
https://www.example.com Aynı kaynak: Örtük bağlantı noktası numarası (443) eşleşiyor

Site

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

.com ve .org gibi üst düzey alanlar (TLD'ler) Kök Bölge Veritabanı'nda listelenir. Önceki
örnekte "site", şema, TLD ve alanın hemen önceki kısmının bir kombinasyonudur (Buna TLD+1 denir). Örneğin, https://www.example.com:443/foo URL'si için "site" https://example.com olur.

Herkese Açık Ek Listesi ve eTLD

.co.jp veya .github.io gibi öğeler içeren alanlar için yalnızca .jp veya .io kullanmak "siteyi" tanımlamak için yeterince spesifik değildir. Belirli bir TLD için kaydedilebilir alanların seviyesini algoritmik olarak belirlemenin bir yolu yoktur. Bu konuda size yardımcı olması için Genel Ek Listesi'nde, etkili TLD'ler (eTLD'ler) olarak da bilinen genel eklerin listesi tanımlanmıştır. eTLD'lerin listesi publicsuffix.org/list adresinde tutulur.

ETLD içeren bir alanın "site" bölümünü tanımlamak için .com ile örnektekiyle aynı uygulamayı uygulayın. https://www.project.github.io:443/foo'ü örnek olarak alırsak şema https, eTLD .github.io ve eTLD+1 project.github.io olur. Bu nedenle https://project.github.io bu URL'nin "sitesi" olarak kabul edilir.

Site (eTLD+1)
URL'nin eTLD içeren 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 şemaya veya farklı bir eTLD+1'e sahip web siteleri "siteler arası"dır.

Kaynak A Kaynak B "Aynı site" mi yoksa "farklı siteler" mi?
https://www.example.com:443 https://www.evil.com:443 Siteler arası: farklı alanlar
https://login.example.com:443 Aynı site: farklı alt alan adlarının önemi yoktur
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

"Dizisiz aynı site"

schemeless same-site

HTTP'nin zayıf bir kanal olarak kullanılmasını önlemek için "aynı site" tanımı, 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, http://www.example.com ve https://www.example.com, yalnızca eTLD+1 kısmı önemli olduğu ve şema dikkate alınmadığı için şemasız aynı site olarak kabul edilir ancak aynı site olarak kabul edilmez.

Kaynak A Kaynak B "Dizisiz aynı site" mi yoksa "siteler arası" mı?
https://www.example.com:443 https://www.evil.com:443 Siteler arası: farklı alanlar
https://login.example.com:443 Dizisiz aynı site: farklı alt alan adlarının önemi yoktur
http://www.example.com:443 Schemeless same-site: different schemes don't matter
https://www.example.com:80 Dizisiz aynı site: Farklı bağlantı noktaları önemli değildir
https://www.example.com:443 Dizisiz aynı site: tam eşleme
https://www.example.com Schemeless same-site: ports don't matter

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

Browser Support

  • Chrome: 76.
  • Edge: 79.
  • Firefox: 90.
  • Safari: 16.4.

Source

Tüm modern tarayıcılar Sec-Fetch-Site HTTP başlığı ile istek gönderir. Başlıkta aşağıdaki değerlerden biri bulunur:

  • cross-site
  • same-site (Schemeful Same-Site'i ifade eder)
  • same-origin
  • none

İsteğin aynı site, aynı kaynak veya siteler arası olup olmadığını belirlemek için Sec-Fetch-Site değerini inceleyebilirsiniz.

Sec-Fetch-Site başlığının değerine makul ölçüde güvenebilirsiniz, çünkü: