← Blog
Guvenlik7 dk okumaMegis

Web Guvenlik Header'lari: HTTP Guvenlik Basliklari

HTTP guvenlik basliklarini yapilandirarak web sitenizi yaygin saldiri turlerine karsi koruyun.

Web Guvenlik Headerlari Nedir?

Web guvenlik headerlari (HTTP Security Headers), sunucunun tarayiciya gonderdigi ve tarayicinin guvenlik davranisini yonlendiren HTTP yanit basliklaridir. Bu headerlar, XSS (Cross-Site Scripting), clickjacking, veri sizmasi ve diger yaygin web saldirilarina karsi ek koruma katmanlari saglar. Dogru yapilandirildklarinda, web uygulamanizin guvenlik seviyesini onemli olcude arttirir.

2026 yilinda siber saldirilar her gecen gun daha sofistike hale geliyor. OWASP verilerne gore, web uygulamalarinin buyuk cogunlugu en az bir kritik guvenlik acigina sahip. Guvenlik headerlari, bu saldirilarin cogu icin birinci savunma hatti gorevi gorur ve uygulamasi oldukca basitttir. Bu rehberde, temel guvenlik headerlarini, ne ise yaradiklarini ve Next.js ile nasil uygulanacagini detayli olarak ele alacagiz.

Content-Security-Policy (CSP)

Content-Security-Policy, en guclu ve en kapsamli guvenlik headerlarindan biridir. Tarayiciya hangi kaynaklardan icerik yuklenebilecegini bildirir ve boylece XSS saldirilarina karsi guclu bir koruma saglar.

CSP Nasil Calisir?

CSP, sayfanin hangi kaynaklardan script, stil, gorsel, font ve diger icerikleri yukleyebileceginii belirleyen bir beyaz liste (whitelist) sistemidir. Beyaz listede olmayan bir kaynaktan icerik yuklenmeye calisildiginda tarayici bunu engeller ve konsola hata mesaji yazar.

Temel CSP Direktifleri

DirektifKontrol Ettigi IcerikOrnek Deger
default-srcTum icerik turleri icin varsayilan kaynak'self'
script-srcJavaScript dosyalari'self' 'unsafe-inline'
style-srcCSS dosyalari'self' 'unsafe-inline'
img-srcGorseller'self' data: https:
font-srcFont dosyalari'self' https://fonts.gstatic.com
connect-srcAPI ve WebSocket baglantilari'self' https://api.ornek.com
frame-ancestorsSayfayi iframe icine alabilecek siteler'none'

CSP Uygulama Stratejisi

CSP'yi uygulamaya gecirerken asagidaki asamali yaklasimi izleyin:

  1. Report-Only modu ile baslayin: Content-Security-Policy-Report-Only headeri ile politikanizi test edin. Bu mod engellemez, sadece ihlalleri raporlar.
  2. Raporlari analiz edin: Hangi kaynaklarin engellend digini inceleyin ve politikanizi buna gore ayarlayin.
  3. Politikayi sikilatirin: 'unsafe-inline' ve 'unsafe-eval' ifadelerini mumkun oldukca kalldirin. Bunun yerine nonce veya hash tabanli CSP kullanin.
  4. Zorlayici moda gecin: Test asamasi tamamlandiginda Content-Security-Policy headerini aktif edin.

Strict-Transport-Security (HSTS)

HSTS headeri, tarayiciya sitenize her zaman HTTPS uzerinden baglanti kurlmasini soyler. Bu, HTTP uzerinden yapilan ilk baglanti sirasinda gerceklesebilecek "man-in-the-middle" saldirilarina karsi koruma saglar.

  • max-age: HSTS politikasinin gecerlilik suresi (saniye cinsinden). Uretiim icin en az 1 yil (31536000) onerilir.
  • includeSubDomains: Politikanin tum alt alan adlarini da kapsamasini saglar.
  • preload: Sitenizin tarayicilarin HSTS on yukleme listesine eklenmesini talep eder. hstspreload.org adresinden basvuru yapabilirsiniz.

Ornek: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Dikkat:HSTS'i etkinlestirmeden once tum alt alan adlarinizin HTTPS destegine sahip olduundan emin olun. Aksi halde erisim sorunlari yasayabilirsiniz ve preload listesinden cikmak haftalar surebilir.

X-Frame-Options

X-Frame-Options headeri, sayfanizin baska siteler tarafindan iframe icine alinmasini kontrol eder. Clickjacking saldirilarina karsi temel koruma saglar. Clickjacking, saldirganlarin sitenizi gorunmez bir iframe icinde gostererek kullanicilarin bilmeden aksiyonlar almasini sagladigi bir saldiri turudur.

  • DENY — Sayfaniz hicbir kosulda iframe icinde gosteruilemez.
  • SAMEORIGIN — Sadece ayni alan adiindaki sayfalar iframe icinde gosterebilir.
  • ALLOW-FROM uri — Belirtilen URI iframe icinde gosterebilir (modern tarayicilarda destegi siniirli).

Not: CSP'nin frame-ancestorsdirektifi, X-Frame-Options'in daha modern ve esnek alternatifidir. Her ikisini de kullanmaniz onerilir.

Referrer-Policy

Referrer-Policy headeri, kullanici baska bir siteye gectiginde tarayicinin ne kadar referrer bilgisi payylasacagini kontrol eder. Bu, kullanici gizliligini korumak ve hassas URL bilgilerinin dis sitelere sizmasini onlemek icin onemlidir.

DegerDavranis
no-referrerHicbir referrer bilgisi gonderilmez
no-referrer-when-downgradeHTTPS -> HTTP gecisinde referrer gonderilmez
originSadece alan adi gonderilir, tam URL degil
origin-when-cross-originAyni sitede tam URL, farkli sitede sadece alan adi
strict-origin-when-cross-originOnerilen varsayilan. Guvenli gecislerde origin, guvensiz gecislerde hicbir sey gonderilmez

Diger Onemli Guvenlik Headerlari

X-Content-Type-Options

X-Content-Type-Options: nosniff headeri, tarayicinin MIME type sniffing yapmasini engeller. Sunucu tarafindan belirtilen Content-Type degerine uyulmasini zorlar. Bu, saldirganlaarin bir dosyayi farkli bir icerik turu olarak yukleterek kod calistirmasini onler.

Permissions-Policy

Permissions-Policy (eski adiyla Feature-Policy), tarayici ozelliklerinin ve API'lerin kullanimini kontrol eder:

  • camera=() — Kamera erisimini engeller
  • microphone=() — Mikrofon erisimini engeller
  • geolocation=(self) — Konum erisimini sadece kendi sitenize sinirlar
  • payment=(self) — Odeme API erisimini kontrol eder

X-DNS-Prefetch-Control

X-DNS-Prefetch-Control: off headeri, tarayicinin sayfa icerigindeki linklerin DNS cozumllemesini onceden yapmasini engeller. Gizlilik odakli siteler icin onerilir.

Next.js ile Guvenlik Headerlari Uygulama

Next.js projelenrinde guvenlik headerlarini next.config.js dosyasindaki headers fonksiyonu ile yapilandirabilirsiniz. Bu yaklasim, tum sayfalara otomatik olarak uygulanir:

next.config.js dosyasinda async headers() fonksiyonunu tanimlarin ve kaynak (source) olarak /:(path)* deseni ile tum rotalara uygulayin. Her header icin key ve value ciftlerinden olusan bir dizi tanimlayin. Ornek headerlar:

  • X-Frame-Options: DENY
  • X-Content-Type-Options: nosniff
  • Referrer-Policy: strict-origin-when-cross-origin
  • Strict-Transport-Security: max-age=31536000; includeSubDomains
  • Permissions-Policy: camera=(), microphone=(), geolocation=()
  • Content-Security-Policy degerini projenizin ihtiyaclarina gore yapilandirin

Vercel uzerinde deploy edilen Next.js projelerinde, vercel.json dosyasindaki headers yapilandirmasi da kullanilabilir. Ancak next.config.js yaklasimi daha esnek ve surum kontrol dostu oldugu icin tercih edilir.

Guvenlik Headerlari Test ve Denetim

Headerlarinizi yapilandirdiktan sonra test etmek ve duzenli olarak denetlemek onemlidir:

  • securityheaders.com: Web sitenizin guvenlik headerlarini analiz eden ucretsiz arac. A+ notu hedefleyin.
  • Mozilla Observatory: Mozilla'nin kapsamli web guvenlik tarama araci.
  • Chrome DevTools: Network sekmesinde Response Headers bolumunden headerlari dogrudan kontrol edin.
  • curl komutu: curl -I https://ornek.com ile yanit headerlarini komut satirindan kontrol edin.
  • CSP Evaluator: Google'in CSP politikanizi analiz eden araci. Zayifliklari tespit eder.

Sik Yapilan Hatalar

  • CSP'yi cok gevsek tanimlamak: script-src * veya unsafe-inline kullmak CSP'nin amacini ortadan kaldirir.
  • Headerlarini sadece anasayfaya uygulamak: Tum sayfalara ve API route'lara uygulandigindan emin olun.
  • Test etmeden uretime almak: Ozellikle CSP, yanlis yapilandirildiginda siteyi bozabilir. Report-Only moduyla baslayin.
  • Ucuncu parti servisleri goz ardi etmek: Google Analytics, reklam pikselleri ve CDN'ler CSP kurallariniza eklenmezzse calismaz.
  • Headerlari guncellemmeyi unutmak: Yeni servisler veya entegrasyonlar eklediiginizde header kurallarinizi da guncelleyin.

Sonuc: Web guvenlik headerlari, minimalefforla maksimum guvenlik artisi saglayan temel onlemlerdir. Dogru yapilandirilmis headerlar, XSS, clickjacking ve veri sizmasi gibi yaygin saldirilara karsi guclu bir savunma hatti olusturur. Megis olarak, gelistirdigimiz tum web projelerinde guvenlik headerlarini en iyi pratiklerle uyguluyor ve duzenlii olarak denetliyoruz.

#security headers#http headers#csp#web guvenlik