Set 01 · Ders 09/09

Tarayıcının güvenlik modeli: aynı kaynak

Tarayıcının farklı siteleri nasıl ayırdığını; kaynak, aynı kaynak politikası ve CORS kavramlarıyla öğren.

Siber Güvenlik Temelleri · Kimlik ve tarayıcı sınırları · Orta · 2 dk teori + 15 dk uygulama

Bu bölümde

  • Bir origin'i oluşturan şema, alan adı ve portu tanımak
  • Aynı kaynak politikası ile CORS'un rollerini ayırmak
  • Kaynaklar arası veri erişimi için dar bir izin tasarlamak
Bu sayfada
Siber Güvenlik Temelleri derslerini görKonum 9/9
  1. 01Siber güvenlik nedir?
  2. 02Ağ temelleri: IP ve TCP
  3. 03DNS: isimden adrese
  4. 04Portlar ve servisler
  5. 05Web nasıl çalışır? HTTP, istek ve yanıt
  6. 06Şifreleme temelleri: gizlemek, imzalamak, özetlemek
  7. 07Kimlik doğrulama ve yetkilendirme
  8. 08Çerezler, oturumlar ve token'lar
  9. 09Tarayıcının güvenlik modeli: aynı kaynak

01 · Teori

Konuyu anlamlandır

Bir çalışma masasında iki şirketin kapalı dosyalarının yan yana durduğunu düşün. Aynı masayı kullanmaları, birbirlerinin dosyalarını okuyabilecekleri anlamına gelmez. Tarayıcı da birçok siteyi aynı anda çalıştırırken aralarına benzer bir okuma sınırı koyar.

Kaynak (origin) nedir?

Tarayıcının temel ayırma birimi kaynaktır (origin). Bir kaynak üç parçadan oluşur: şema + alan adı + port.

https://siberlab.dev:443
  │        │          │
şema     alan adı    port

Bu üç değer aynıysa adresler aynı kaynakta kabul edilir. http ile https, siberlab.dev ile api.siberlab.dev veya iki farklı port aynı kaynak değildir.

Aynı kaynak politikası neyi sınırlar?

Aynı kaynak politikası (same-origin policy), bir kaynaktaki JavaScript'in başka bir kaynağın belge, depolama alanı ve yanıt verileriyle kurabileceği etkileşimi sınırlar. Temel amaç, bir sitenin başka bir siteye ait hassas veriyi doğrudan okumasını engellemektir.

Bu politika bütün ağ isteklerini durduran bir güvenlik duvarı değildir. Tarayıcılar farklı kaynaklardaki resimleri yükleyebilir, bağlantılara gidebilir, formlar gönderebilir ve bazı istekleri başlatabilir. Çoğu durumda sınır, isteğin gönderilmesinden çok dönen yanıtın sayfadaki JavaScript'e okunabilir olarak verilmesi üzerindedir.

Çerezlerin hangi isteklere eklendiği kendi alan adı, yol, Secure ve SameSite kurallarıyla belirlenir. HttpOnly ise JavaScript'in bir çerez değerini okumasını engelleyen ayrı bir çerez özelliğidir; aynı kaynak politikasının bir katmanı değildir.

CORS hangi izni verir?

Bazen uygulama.example içindeki JavaScript'in api.example yanıtını okuması gerekir. Kaynaklar farklı olduğu için tarayıcı varsayılan olarak bu erişimi sınırlar. Kaynaklar arası kaynak paylaşımı (CORS), hedef sunucunun yanıt başlıklarıyla belirli bir origin'e bu yanıtı okuma izni vermesidir.

Bazı istekler doğrudan gönderilir; bazıları için tarayıcı önce bir ön kontrol isteği (preflight) yapar. Her iki durumda da CORS'un temel görevi, yanıtın çağıran sayfaya açılıp açılmayacağını belirlemektir. CORS kullanıcı kimliğini doğrulamaz, yetki kontrolünün yerini almaz ve tarayıcı dışındaki istemcileri engellemez.

Güvenlik sonucu nettir: aynı kaynak politikası varsayılan okuma sınırını kurar; CORS ise sunucunun bu sınıra verdiği dar bir istisnadır. Bu dokuz temel kavram, tek bir web oturumunun nasıl çalıştığını ve nerede korunması gerektiğini anlamak için ortak bir dil oluşturur.

02 · Uygulama

Origin ve CORS kararı

Yaklaşık 15 dk

`app.example`, `api.example` ve üçüncü taraf bir analiz servisi arasındaki okuma izinlerini en dar biçimde tasarla.

  1. 01Her adresin şema, alan adı ve portunu karşılaştır.
  2. 02Hangi isteğin aynı origin, hangisinin cross-origin olduğunu belirle.
  3. 03API için izin verilen origin ve credential davranışını açıkça yaz.

03 · Kanıt

Kaynaklar arası erişim kararı

Üç origin için izin verilen ve engellenen okumaları gerekçelendiren kısa bir politika.

İyi bir çıktı şunları göstermeli

  • CORS kimlik doğrulama veya ağ güvenlik duvarı gibi sunulmuyor.
  • Wildcard izin ile credential paylaşımı önerilmiyor.
  • Tarayıcı okuma sınırı ile sunucu yetki kontrolü ayrı ele alınıyor.

Kendini kontrol et

Metne dönmeden, cevapları kendi cümlelerinle düşün.

  1. 01Aynı kaynak politikası ile CORS arasındaki fark nedir?
  2. 02Tarayıcı bir sitenin başka bir kaynağa istek göndermesine izin verirken yanıtı okumasını neden engelleyebilir?
  3. 03`uygulama.example` yalnız `api.example` verisini okuyacaksa CORS izni nasıl verilmelidir?
Cevaplarını karşılaştır
  1. 01Aynı kaynak politikası tarayıcının varsayılan okuma sınırıdır; CORS ise hedef sunucunun belirli kaynaklara bu sınırı aşma izni vermesidir.
  2. 02Bazı web kaynaklarının yüklenmesi ve formların gönderilmesi için kaynaklar arası istek gerekir; hassas yanıtı okumayı engellemek ise farklı sitelerin kullanıcı verisini ele geçirmesini önler.
  3. 03API, izin verilen origin olarak yalnız gerekli uygulama origin'ini açıkça belirtmeli; herkese açık joker izin kullanmamalı ve gerekiyorsa kimlik bilgisi kurallarını ayrıca sınırlandırmalıdır.

Kısaca

  • Origin; şema, alan adı ve port üçlüsüdür.
  • Aynı kaynak politikası farklı sitelerin veriyi okumasını varsayılan olarak engeller.
  • CORS güvenlik duvarı değil, sunucunun verdiği kontrollü okuma iznidir.

Kaynakça

Son gözden geçirme: 17 Temmuz 2026

  • HTML Standard — Origins

    WHATWG

    Tarayıcı origin kavramı, origin karşılaştırması ve belgeler arası güven sınırları.

  • Fetch Standard — CORS Protocol

    WHATWG

    Kaynaklar arası isteklerin ve sunucu tarafından verilen CORS izinlerinin normatif davranışı.

  • Same-origin policy

    MDN Web Docs

    Aynı kaynak politikasının okuma, yazma ve gömme davranışlarına yönelik uygulamalı açıklaması.

Tarayıcının güvenlik modeli: aynı kaynak · Bilgi · siberlab