---
title: 'Güvenlik Başlıkları Kapsamı'
source: 'https://academia.sh/tr/kurslar/calisma-zamani-guvenligi/guvenlik-basliklari-kapsami'
course: 'Çalışma Zamanı Güvenliği ve Sır Yönetimi'
language: tr
updated: '2026-08-17T18:06:41+00:00'
license: 'CC BY-SA 4.0'
---

# Güvenlik Başlıkları Kapsamı

Güvenlik başlıklarını uygulama içinden çıkarıp kenardan yönetmenin kapsadığı uç, uygulama ve istek sayısının dört ayrı sayımla ölçülmesi: kenardan geçmeyen tarayıcı yüzeyinin taşıdığı günlük istek, tarayıcı yüzeyi olmayan uçlarda yapılandırılmış ama etkisiz kalan hücre, sıkı bir kaynak kısıtlama politikasının kırdığı meşru sayfa sayısı ve politikanın sıkılaştırılabilmesi için kod aşamasında yapılması gereken iş.

Önceki üç ders isteğe bakan savunmaları ölçtü: kural kümesi isteğin biçimine, hız sayacı istek
sayısına, eşikler hesaba ve adrese baktı. Üçü de bir isteği durdurmaya ya da geçirmeye karar
veriyordu. Çalışma zamanında verilen bir karar daha vardır ve hiçbir isteği durdurmaz: yanıtla
birlikte gönderilen güvenlik başlıkları tarayıcının ne yapmasına izin verildiğini belirler.

Başlıkların ne yaptığı daha önceki bir kursta uygulama içinde ölçüldü ve burada tekrarlanmıyor.
Bu dersin ölçüsü başkadır: başlık yapılandırması uygulamadan çıkarılıp önlerindeki kenar
katmanına taşındığında **kaç uygulama ve kaç uç** aynı anda kapsanıyor, kapsamın dışında ne
kalıyor. Bu, "yakalanan istek" sayısı üretmeyen bir savunmadır; ölçüsü kapsamdır ve kapsam
sayılmadığında bir yapılandırma dosyası gerçek bir korumayla karıştırılır.

## Başlık Nerede Yazılıyor

Bölgesel ölçüm ağının üretim ortamı `node` ile modelleniyor; gerçek bir sunucu ayağa
kaldırılmıyor ve hiçbir gerçek yanıt üretilmiyor.

- **US16.** On dört uç, dokuz uygulama, altı başlık ve günlük istek sayıları kurgusal ölçüm ağına
  aittir. Uçların bir bölümü ortak kenar katmanından geçiyor, bir bölümü doğrudan çağrılıyor.
- **US17.** "Tarayıcı yüzeyi" alanı, ucun bir tarayıcıya belge ya da tarayıcının yüklediği bir
  kaynak döndürüp döndürmediğini söyler. Güvenlik başlıkları yalnız tarayıcı yüzeyinde bir şey
  yapar; program arayüzünde yazılı olurlar ve hiçbir davranış değiştirmezler.
- **US18.** Kenardan yönetim, kenardan geçen her uca altı başlığın tamamını yazar. Kenardan
  geçmeyen uçta yalnız uygulamanın kendi yazdığı başlık kalır.
- **US19.** Kaynak kısıtlama politikası rapor kipinde koşturuluyor: engellenecek kaynak sayılıyor,
  gerçekten engellenmiyor. Kaynakların meşru olup olmadığı modelde biliniyor.
- **US20.** "Daha erken kapatma aşaması" sütunu her başlık için elle işaretlendi.

```js
// uc.mjs — uretim ortamindaki uc noktalari, alti guvenlik basligi ve sayfa kaynaklari; model
// [uc, uygulama, yol, tarayici yuzeyi mi, gunluk istek, uygulamanin kendi yazdigi baslik]
export const UC = [
  ['abone portali, sayfa', 'abone portali', 'kenar', true, 84000, 2],
  ['abone portali, program arayuzu', 'abone portali', 'kenar', false, 41000, 1],
  ['abone portali, kimlik dogrulama', 'abone portali', 'kenar', true, 6800, 2],
  ['saha uygulamasi, sayfa', 'saha uygulamasi', 'kenar', true, 12000, 0],
  ['saha uygulamasi, dosya yukleme', 'saha uygulamasi', 'kenar', false, 5400, 0],
  ['saha uygulamasi, mobil arka uc', 'saha uygulamasi', 'kenar', false, 22000, 0],
  ['fatura sayfasi', 'faturalama arayuzu', 'kenar', true, 9000, 3],
  ['rapor sayfasi', 'raporlama', 'kenar', true, 2600, 1],
  ['saglik yoklamasi', 'abone portali', 'kenar', false, 1440, 0],
  ['yonetim arayuzu', 'yonetim arayuzu', 'dogrudan', true, 900, 0],
  ['eski abone portali', 'eski portal', 'dogrudan', true, 3100, 1],
  ['duragan varlik konagi', 'varlik konagi', 'dogrudan', true, 62000, 0],
  ['sayac toplama arayuzu', 'sayac toplama', 'dogrudan', false, 150000, 0],
  ['faturalama servis arayuzu', 'faturalama servisi', 'dogrudan', false, 38000, 0],
];

// [baslik, durdurdugu kalem sinifi, daha erken kapatma asamasi]
export const BASLIK = [
  ['kaynak kisitlama politikasi', 'izinsiz betik yurutmesi', 'kod'],
  ['cerceveleme korumasi', 'sayfanin gomulmesi', 'yok'],
  ['tasima katmani zorlamasi', 'duz metin baglanti', 'yok'],
  ['icerik turu sabitlemesi', 'tur sezme', 'kod'],
  ['yonlendirici bilgisi politikasi', 'yolda sizan tanimlayici', 'kod'],
  ['tarayici yetenegi kisitlamasi', 'istenmeyen aygit erisimi', 'yok'],
];

// kenar yonetiminden sonra bir ucta yazili baslik sayisi
export const yazili = (u) => (u[2] === 'kenar' ? BASLIK.length : u[5]);
// bir baslik ancak tarayici yuzeyinde bir sey yapar
export const etkili = (u) => (u[3] ? yazili(u) : 0);

// [sayfa, kaynak, konum, mesru mu, gunluk yukleme]
export const KAYNAK = [
  ['abone portali, sayfa', 'uygulama betigi', 'ayni-koken', true, 84000],
  ['abone portali, sayfa', 'stil dosyasi', 'varlik-konagi', true, 84000],
  ['abone portali, sayfa', 'satir ici olcum betigi', 'satir-ici', true, 84000],
  ['abone portali, sayfa', 'bagimliliktan gelen ek betik', 'ucuncu-taraf', false, 84000],
  ['abone portali, kimlik dogrulama', 'form betigi', 'ayni-koken', true, 6800],
  ['abone portali, kimlik dogrulama', 'satir ici alan dogrulamasi', 'satir-ici', true, 6800],
  ['saha uygulamasi, sayfa', 'harita bileseni', 'varlik-konagi', true, 12000],
  ['saha uygulamasi, sayfa', 'satir ici durum betigi', 'satir-ici', true, 12000],
  ['fatura sayfasi', 'tablo betigi', 'ayni-koken', true, 9000],
  ['fatura sayfasi', 'yazi tipi', 'varlik-konagi', true, 9000],
  ['rapor sayfasi', 'cizim kitapligi', 'varlik-konagi', true, 2600],
  ['rapor sayfasi', 'enjekte satir ici betik', 'satir-ici', false, 2600],
];

export const POLITIKA = [
  ['yalniz ayni koken', (k) => k[2] === 'ayni-koken'],
  ['arti varlik konagi', (k) => ['ayni-koken', 'varlik-konagi'].includes(k[2])],
  ['arti satir ici toptan', (k) => ['ayni-koken', 'varlik-konagi', 'satir-ici'].includes(k[2])],
  ['arti satir ici karma', (k) => ['ayni-koken', 'varlik-konagi'].includes(k[2]) ||
    (k[2] === 'satir-ici' && k[3])],
];
```

## Kapsama Nasıl Sayılırsa

```js
// kapsama.mjs — basligi kenardan yonetmenin kapsadigi uc, istek ve hucre
import { UC, BASLIK, yazili, etkili } from './uc.mjs';

const s = (x, n) => String(x).padStart(n);
const T = (f) => UC.filter(f).reduce((t, u) => t + u[4], 0);
const N = (f) => UC.filter(f).length;
console.log(`${UC.length} uc, ${new Set(UC.map((u) => u[1])).size} uygulama, ${BASLIK.length} baslik` +
  ` = ${UC.length * BASLIK.length} hucre; gunde ${T(() => true)} istek\n`);

console.log(`${'uc'.padEnd(33)}${s('yol', 10)}${s('tarayici', 10)}${s('gunluk', 8)}` +
  `${s('kendi yazdigi', 15)}${s('kenardan sonra', 16)}${s('etkili', 8)}`);
for (const u of UC)
  console.log(`${u[0].padEnd(33)}${s(u[2], 10)}${s(u[3] ? 'evet' : 'hayir', 10)}${s(u[4], 8)}` +
    `${s(u[5], 15)}${s(yazili(u), 16)}${s(etkili(u), 8)}`);

const sonra = UC.reduce((t, u) => t + yazili(u), 0), etk = UC.reduce((t, u) => t + etkili(u), 0);
console.log(`\n${'olcu'.padEnd(38)}${s('once', 8)}${s('kenardan sonra', 16)}`);
for (const [a, b, c] of [
  ['yazili baslik hucresi', UC.reduce((t, u) => t + u[5], 0), sonra],
  ['tarayici yuzeyinde etkili hucre', UC.reduce((t, u) => t + (u[3] ? u[5] : 0), 0), etk],
  ['baslik yazan uc sayisi', N((u) => u[5] > 0), N((u) => yazili(u) > 0)],
]) console.log(`${a.padEnd(38)}${s(b, 8)}${s(c, 16)}`);

console.log(`\n${'kapsama nasil sayilirsa'.padEnd(38)}${s('kapsanan', 10)}${s('toplam', 8)}${s('%', 8)}`);
for (const [a, b, c] of [
  ['uc sayisiyla', N((u) => u[2] === 'kenar'), UC.length],
  ['istek hacmiyle', T((u) => u[2] === 'kenar'), T(() => true)],
  ['tarayici yuzeyindeki istek hacmiyle', T((u) => u[2] === 'kenar' && u[3]), T((u) => u[3])],
  ['tarayici hucresiyle', etk, N((u) => u[3]) * BASLIK.length],
]) console.log(`${a.padEnd(38)}${s(b, 10)}${s(c, 8)}${s((100 * b / c).toFixed(1), 8)}`);

console.log(`\nkapsam disinda kalan tarayici yuzeyi (kenara alinsa kazanilan):`);
for (const u of UC.filter((x) => x[3] && x[2] !== 'kenar'))
  console.log(`  ${u[0].padEnd(24)}${s(u[4], 8)} istek/gun, ${s(BASLIK.length - u[5], 2)} hucre kazanilir`);
console.log(`\nyapilandirilmis ama etkisiz hucre (tarayici yuzeyi olmayan uclarda): ${sonra - etk}`);
```

```
14 uc, 9 uygulama, 6 baslik = 84 hucre; gunde 438240 istek

uc                                      yol  tarayici  gunluk  kendi yazdigi  kenardan sonra  etkili
abone portali, sayfa                  kenar      evet   84000              2               6       6
abone portali, program arayuzu        kenar     hayir   41000              1               6       0
abone portali, kimlik dogrulama       kenar      evet    6800              2               6       6
saha uygulamasi, sayfa                kenar      evet   12000              0               6       6
saha uygulamasi, dosya yukleme        kenar     hayir    5400              0               6       0
saha uygulamasi, mobil arka uc        kenar     hayir   22000              0               6       0
fatura sayfasi                        kenar      evet    9000              3               6       6
rapor sayfasi                         kenar      evet    2600              1               6       6
saglik yoklamasi                      kenar     hayir    1440              0               6       0
yonetim arayuzu                    dogrudan      evet     900              0               0       0
eski abone portali                 dogrudan      evet    3100              1               1       1
duragan varlik konagi              dogrudan      evet   62000              0               0       0
sayac toplama arayuzu              dogrudan     hayir  150000              0               0       0
faturalama servis arayuzu          dogrudan     hayir   38000              0               0       0

olcu                                      once  kenardan sonra
yazili baslik hucresi                       10              55
tarayici yuzeyinde etkili hucre              9              31
baslik yazan uc sayisi                       6              10

kapsama nasil sayilirsa                 kapsanan  toplam       %
uc sayisiyla                                   9      14    64.3
istek hacmiyle                            184240  438240    42.0
tarayici yuzeyindeki istek hacmiyle       114400  180400    63.4
tarayici hucresiyle                           31      48    64.6

kapsam disinda kalan tarayici yuzeyi (kenara alinsa kazanilan):
  yonetim arayuzu              900 istek/gun,  6 hucre kazanilir
  eski abone portali          3100 istek/gun,  5 hucre kazanilir
  duragan varlik konagi      62000 istek/gun,  6 hucre kazanilir

yapilandirilmis ama etkisiz hucre (tarayici yuzeyi olmayan uclarda): 24
```

Kenardan yönetimin kazancı ilk özet tablosunda yazılı ve küçük değildir: yazılı başlık hücresi
ondan elli beşe çıkıyor, yani tek bir yapılandırma değişikliği kırk beş hücreyi aynı anda
dolduruyor. Uygulama içinde bu iş dokuz ayrı kod tabanında dokuz kez yapılırdı ve dört uygulama
hiç yapmamıştı. Kenar katmanının gerçek üstünlüğü budur: kapsam, uygulama ekiplerinin ayrı ayrı
vereceği kararlardan çıkarılmıştır.

İkinci tablo aynı kapsamı dört ayrı sayımla veriyor ve dördü farklı sayı üretiyor: uç sayısıyla
yüzde 64,3, istek hacmiyle yüzde 42,0, tarayıcı yüzeyindeki istek hacmiyle yüzde 63,4, tarayıcı
hücresiyle yüzde 64,6. Aynı katman için dört farklı kapsama oranı yazılabiliyor ve hangisinin
raporlandığı bir tercihtir. İstek hacmi sayımının düşük çıkmasının nedeni sayaç toplama
arayüzünün günde yüz elli bin istek taşıması, ancak o ucun bir tarayıcıdan çağrılmamasıdır; o
uçta başlık olsa da olmasa da hiçbir şey değişmez. Bu yüzden anlamlı sayım üçüncüsüdür: tarayıcı
yüzeyindeki isteğin ne kadarı kapsanıyor.

Alt liste asıl bulguyu veriyor. Kapsam dışında kalan üç uç var ve bunlardan biri günde altmış iki
bin istek taşıyan durağan varlık konağıdır. Uygulama envanterinde bir "uygulama" olarak
görünmediği için kapsama tablolarında hiç sayılmaz; oysa tarayıcı ondan gelen kaynakları
yüklüyor ve o kaynaklar hiçbir başlık taşımıyor. Yönetim arayüzü ile eski abone portalı toplam
dört bin istek eder, yani kapsam dışı hacmin yüzde altısı. Kapsamı genişletme işinin sırasını bu
liste belirler ve envantere hiç girmemiş uç, sıradaki en büyük kalemdir.

Son satır ters yöndeki kusuru sayıyor: yirmi dört hücre yapılandırılmış ama etkisizdir. Program
arayüzü uçlarında altı başlık da yazılıdır, denetim listesinde yeşil görünürler ve hiçbir
davranış değiştirmezler. Yapılandırma sayısı bir koruma ölçüsü değildir.

## Sıkı Politikanın Kırdığı Sayfa

Kapsam bir yanlış pozitif üretmez; başlığın **içeriği** üretir. Kaynak kısıtlama politikası
sıkılaştırıldığında engellenen şey yalnız izinsiz betik değil, sayfanın kendi kaynaklarıdır.

```js
// politika.mjs — kaynak kisitlama politikasini rapor kipinde kosturup kirilan mesru kaynagi saymak
import { UC, BASLIK, KAYNAK, POLITIKA, yazili } from './uc.mjs';

const s = (x, n) => String(x).padStart(n);
const kapsanan = new Set(UC.filter((u) => u[3] && yazili(u) === BASLIK.length).map((u) => u[0]));
const K = KAYNAK.filter((k) => kapsanan.has(k[0]));
console.log(`politika yalniz kenardan yonetilen ${kapsanan.size} tarayici ucunda gecerli;` +
  ` bu uclarda ${K.length} kaynak var\n`);

console.log(`${'politika'.padEnd(24)}${s('engellenen mesru', 18)}${s('kirilan sayfa', 15)}` +
  `${s('engellenen kotu', 17)}${s('gecen kotu', 12)}`);
for (const [ad, izin] of POLITIKA) {
  const eng = K.filter((k) => !izin(k)), m = eng.filter((k) => k[3]);
  console.log(`${ad.padEnd(24)}${s(m.length, 18)}${s(new Set(m.map((k) => k[0])).size, 15)}` +
    `${s(eng.filter((k) => !k[3]).length, 17)}${s(K.filter((k) => izin(k) && !k[3]).length, 12)}`);
}

const satirIci = K.filter((k) => k[2] === 'satir-ici' && k[3]);
const izin2 = POLITIKA[1][1], kodSonrasi = K.filter((k) => k[2] !== 'satir-ici' || !k[3]);
console.log(`\nkarma listesine yazilmasi gereken satir ici betik: ${satirIci.length}`);
console.log(`satir ici betikler kod asamasinda kaldirilirsa "arti varlik konagi" politikasi:` +
  ` engellenen mesru ${kodSonrasi.filter((k) => k[3] && !izin2(k)).length},` +
  ` gecen kotu ${kodSonrasi.filter((k) => !k[3] && izin2(k)).length}`);

console.log(`\n${'baslik'.padEnd(33)}${'durdurdugu kalem'.padEnd(26)}${s('erken asama', 13)}`);
for (const [ad, kalem, asama] of BASLIK)
  console.log(`${ad.padEnd(33)}${kalem.padEnd(26)}${s(asama, 13)}`);
const yok = BASLIK.filter((b) => b[2] === 'yok');
console.log(`\nyalniz bu katmanda kapatilabilen baslik ${yok.length}/${BASLIK.length};` +
  ` bunlarin etkili oldugu uc ${UC.filter((u) => u[3] && yazili(u) === BASLIK.length).length},` +
  ` gunde ${UC.filter((u) => u[3] && yazili(u) === BASLIK.length).reduce((t, u) => t + u[4], 0)} istek`);
```

```
politika yalniz kenardan yonetilen 5 tarayici ucunda gecerli; bu uclarda 12 kaynak var

politika                  engellenen mesru  kirilan sayfa  engellenen kotu  gecen kotu
yalniz ayni koken                        7              5                2           0
arti varlik konagi                       3              3                2           0
arti satir ici toptan                    0              0                1           1
arti satir ici karma                     0              0                2           0

karma listesine yazilmasi gereken satir ici betik: 3
satir ici betikler kod asamasinda kaldirilirsa "arti varlik konagi" politikasi: engellenen mesru 0, gecen kotu 0

baslik                           durdurdugu kalem            erken asama
kaynak kisitlama politikasi      izinsiz betik yurutmesi             kod
cerceveleme korumasi             sayfanin gomulmesi                  yok
tasima katmani zorlamasi         duz metin baglanti                  yok
icerik turu sabitlemesi          tur sezme                           kod
yonlendirici bilgisi politikasi  yolda sizan tanimlayici             kod
tarayici yetenegi kisitlamasi    istenmeyen aygit erisimi            yok

yalniz bu katmanda kapatilabilen baslik 3/6; bunlarin etkili oldugu uc 5, gunde 114400 istek
```

Dört satır bir sıkılık eğrisidir. En sıkı politika iki kötü kaynağı engelliyor ve yanında yedi
meşru kaynağı da engelleyerek beş sayfanın tamamını kırıyor; kapsanan her tarayıcı ucu bozulmuş
demektir. Varlık konağına izin verilince kırılan sayfa üçe iner, kötü kaynak yine ikidir. Üçüncü
satır üretimde en sık görülen kaçış yoludur: satır içi betiklere toptan izin verilir, kırılan
sayfa sıfıra iner — ve rapor sayfasındaki enjekte satır içi betik de aynı izinle geçer. Kırılan
sayfa sayısını sıfırlayan bu ayar, politikanın engellediği kötü kaynağı ikiden bire düşürür.

Dördüncü satır ikisini birden veriyor: satır içi betiklere karma listesiyle izin verildiğinde
kırılan sayfa sıfır, engellenen kötü kaynak ikidir. Bedeli listenin kendisidir. Üç satır içi
betik karma listesine yazılmalıdır ve bu betiklerden biri değiştiğinde liste güncellenmezse
sayfa kırılır. Politika artık bir başlık değeri değil, kodun her sürümünde bakılacak bir
envanterdir — birinci dersteki muafiyet listesiyle aynı türden bir yük.

Bir alt satır kursun sorusunu yanıtlıyor. Satır içi betikler kod aşamasında kaldırılırsa "artı
varlık konağı" politikası hem sıfır meşru kaynak engelliyor hem de sıfır kötü kaynak geçiriyor:
karma listesine gerek kalmıyor. Başlık aynı sonucu ancak sürekli bakım karşılığında veriyor.
Alt tablo bu ayrımı altı başlığa yayıyor: üçünün durdurduğu kalem kod aşamasında kapatılabilir,
üçünün aşaması yoktur. Bu üçü tarayıcının davranışını belirler ve uygulama kodundan söylenemez;
katmanın karşılıksız payı budur ve beş uçta, günde yüz on dört bin dört yüz istekte geçerlidir.

## Özet

- Başlığı kenardan yönetmek yazılı hücreyi 10'dan 55'e çıkardı ve dört uygulamayı ilk kez
  kapsama aldı; kapsam artık uygulama ekiplerinin ayrı kararlarına bağlı değildir.
- Aynı kapsam dört ayrı sayımla dört ayrı oran veriyor: uç sayısıyla yüzde 64,3, istek hacmiyle
  yüzde 42,0, tarayıcı yüzeyindeki istek hacmiyle yüzde 63,4, tarayıcı hücresiyle yüzde 64,6.
  Anlamlı olan üçüncüsüdür; ötekiler tarayıcının hiç görmediği uçları da sayar.
- Kapsam dışında üç tarayıcı ucu kaldı ve bunların 66.000 isteğinin 62.000'i envanterde
  "uygulama" olarak görünmeyen durağan varlık konağına aittir. Buna karşılık 24 hücre
  yapılandırılmış ama etkisizdir: program arayüzü uçlarında başlık yazılıdır, bir şey yapmaz.
- Kaynak kısıtlama politikası en sıkı ayarda 2 kötü kaynağı engellerken 7 meşru kaynağı da
  engelledi ve 5 sayfanın hepsini kırdı. Satır içi betiğe toptan izin kırılmayı sıfırladı ama
  engellenen kötü kaynağı 2'den 1'e düşürdü; karma listesi ikisini birden verdi (0 kırılan,
  2 engellenen) ve karşılığında 3 satırlık bir bakım envanteri getirdi.
- Satır içi betikler kod aşamasında kaldırılırsa politika karma listesi olmadan 0 kırılan ve
  0 geçen kötü kaynak veriyor. Altı başlığın üçünün durdurduğu kalem kod aşamasında kapanır;
  yalnız bu katmanda kapatılabilen üç başlık 5 uçta, günde 114.400 istekte geçerlidir.

## Sonraki Adım

Bu dersin ölçüsü kapsamdı ve kapsam bir yanıtla birlikte gönderilen değerlerle sağlandı. Önceki
üç ders ise isteğin biçimine, sayısına ve kimliğine baktı. Dördünün de ortak sınırı aynıdır:
karar tek bir istek ya da tek bir yanıt üzerinde veriliyor. Oysa birinci dersten beri hiçbir
ayarda durdurulamayan kalem — iş akışı dışı toplu indirme — tek tek isteklerde kusursuz
görünüyordu; yanlış olan tek şey aynı oturumun isteklerinin **birlikte çizdiği şekildi**. Sonraki
ders savunmayı isteğin dışına çıkarıp oturumun davranışına bakıyor, taban çizgisinden sapan
oturumu anormallik puanıyla işaretliyor ve asıl soruyu oraya soruyor: sapma başladıktan kaç
dakika sonra.
