Ana içeriğe geç

Same-Origin Policy

Aynı Kaynak Politikası

Türkçe karşılığı
aynı köken politikası
Okunuşu
seym oricin polısi

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/same-origin-policy

Kısaca

Same-origin policy, bir sitedeki betiklerin, o site açıkça izin vermedikçe başka bir sitedeki verileri okumasını engelleyen tarayıcı güvenlik kuralıdır.

Same-origin policy nedir?

Same-origin policy, tarayıcının temel yalıtım kuralıdır. Bir web sayfasının kendi origin'inden gelen kaynaklarla serbestçe etkileşime girmesine izin verir, ancak sayfanın betiklerinin diğer origin'lere ait yanıtları, sayfaları veya depolamayı okumasını engeller. Bu kural olmasaydı ziyaret ettiğiniz herhangi bir web sitesi, tarayıcınızı ve çerezlerinizi kullanarak diğer sitelerdeki e-postanızı veya banka bakiyenizi okuyabilirdi.

Origin, https://app.example.com:443 örneğindeki gibi şema (scheme), host ve portun birleşimidir. İki URL'nin aynı origin'e sahip olması için üçünün de eşleşmesi gerekir; bu yüzden http://example.com ile https://example.com farklı origin'lerdir, example.com ile api.example.com da öyle. Politika çoğunlukla göndermeyi değil, okumayı kısıtlar: bir sayfa yine de diğer origin'lerden görselleri, betikleri ve iframe'leri gömebilir ve onlara form gönderebilir, ancak JavaScript'i cross-origin bir fetch yanıtını, cross-origin bir iframe'in DOM'unu veya başka bir origin'in çerezlerini ve yerel depolamasını okuyamaz.

Bir apartman girişindeki posta kutuları gibidir: herkes herhangi bir kutuya mektup atabilir, ancak yalnızca anahtarı olan sakin kutuyu açıp içindekini okuyabilir. Kuralı gevşetmenin kontrollü yolları vardır: cross-origin fetch istekleri için CORS ve pencereler ile iframe'ler arasındaki iletişim için postMessage gibi. Okumaya odaklanması, başka savunmalara neden hâlâ ihtiyaç duyulduğunu da açıklar: siteler arası istekler yine gönderilebilir, bu yüzden CSRF mümkün kalır ve çerçeveleme varsayılan olarak serbesttir, bu yüzden clickjacking'in kendi koruması gerekir.

Same-origin policy sıklıkla CORS ile karıştırılır. Same-origin policy tarayıcılara yerleşik varsayılan kısıtlamadır; CORS ise bir sunucunun Access-Control-Allow-Origin gibi başlıklar göndererek bu kısıtlamayı gevşetmesini sağlayan bir mekanizmadır. Dolayısıyla bir CORS hatası, politikanın tasarlandığı gibi çalıştığı anlamına gelir. İkisi de yalnızca tarayıcılar tarafından uygulanır; bu da onları bir API'yi doğrudan çağıran betiklere veya sunuculara karşı korumadığı anlamına gelir.

Önemli noktalar

  • Same-origin policy, bir origin'deki betiklerin başka bir origin'deki verileri okumasını engeller.
  • Origin; şema, host ve portun birleşimidir.
  • Cross-origin göndermeye ve gömmeye çoğunlukla izin verilir; sonuçları okumak engellenir.
  • CORS ve postMessage, politikayı gevşetmenin standart ve kontrollü yollarıdır.
  • Tarayıcılar tarafından uygulanır ve sunucu taraflı yetkilendirmenin yerini tutmaz.

Örnek

Hangi isteklerin cross-origin sayıldığıjavascript
// This page runs on https://shop.example.com
await fetch("/api/cart"); // same origin: allowed

// A different host is a different origin: reading the response is blocked
// unless api.other.com replies with a matching CORS header
await fetch("https://api.other.com/data");

// All of these are different origins from https://shop.example.com:
// http://shop.example.com        (different scheme)
// https://www.example.com        (different host)
// https://shop.example.com:8443  (different port)

Sık sorulan sorular

Aynı origin ne sayılır?

İki URL'nin şeması, host'u ve portu birebir aynıysa aynı origin'i paylaşır. https://example.com/a ve https://example.com/b aynı origin'dir; https://example.com ve https://api.example.com ise değildir.

Same-origin policy ile CORS arasındaki fark nedir?

Same-origin policy, betiklerin cross-origin yanıtları okumasını engelleyen tarayıcının varsayılan kuralıdır. CORS ise bir sunucunun belirli başka origin'lerin yanıtlarını okumasına izin vermek için kullandığı, isteğe bağlı bir mekanizmadır.

Same-origin policy CSRF'i önler mi?

Hayır. Saldırganın sayfasının yanıtı okumasını engeller, ancak tarayıcı siteler arası isteği yine, çoğu zaman kullanıcının çerezleriyle gönderir. CSRF koruması, sunucuda token'lar, SameSite çerezleri veya origin denetimleri gerektirir.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar