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
| Direktif | Kontrol Ettigi Icerik | Ornek Deger |
|---|---|---|
default-src | Tum icerik turleri icin varsayilan kaynak | 'self' |
script-src | JavaScript dosyalari | 'self' 'unsafe-inline' |
style-src | CSS dosyalari | 'self' 'unsafe-inline' |
img-src | Gorseller | 'self' data: https: |
font-src | Font dosyalari | 'self' https://fonts.gstatic.com |
connect-src | API ve WebSocket baglantilari | 'self' https://api.ornek.com |
frame-ancestors | Sayfayi iframe icine alabilecek siteler | 'none' |
CSP Uygulama Stratejisi
CSP'yi uygulamaya gecirerken asagidaki asamali yaklasimi izleyin:
- Report-Only modu ile baslayin:
Content-Security-Policy-Report-Onlyheaderi ile politikanizi test edin. Bu mod engellemez, sadece ihlalleri raporlar. - Raporlari analiz edin: Hangi kaynaklarin engellend digini inceleyin ve politikanizi buna gore ayarlayin.
- Politikayi sikilatirin:
'unsafe-inline've'unsafe-eval'ifadelerini mumkun oldukca kalldirin. Bunun yerine nonce veya hash tabanli CSP kullanin. - Zorlayici moda gecin: Test asamasi tamamlandiginda
Content-Security-Policyheaderini 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.orgadresinden 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.
| Deger | Davranis |
|---|---|
no-referrer | Hicbir referrer bilgisi gonderilmez |
no-referrer-when-downgrade | HTTPS -> HTTP gecisinde referrer gonderilmez |
origin | Sadece alan adi gonderilir, tam URL degil |
origin-when-cross-origin | Ayni sitede tam URL, farkli sitede sadece alan adi |
strict-origin-when-cross-origin | Onerilen 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 engellermicrophone=()— Mikrofon erisimini engellergeolocation=(self)— Konum erisimini sadece kendi sitenize sinirlarpayment=(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: DENYX-Content-Type-Options: nosniffReferrer-Policy: strict-origin-when-cross-originStrict-Transport-Security: max-age=31536000; includeSubDomainsPermissions-Policy: camera=(), microphone=(), geolocation=()Content-Security-Policydegerini 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.comile 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 *veyaunsafe-inlinekullmak 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.