Web Sitesi Güvenlik Başlıkları Rehberi — En Önemli 6 Header (2026)
Güvenlik başlıkları, web sitenizin görünmez koruma katmanıdır. Hiçbir maliyeti yoktur, 10 dakikada kurulur — ve yine de web sitelerinin %80'inden fazlasında eksiktir. Bu yazıda her bir başlığın ne işe yaradığını ve nasıl ekleneceğini öğreneceksiniz.
HTTP Güvenlik Başlıkları Nedir?
Birisi sitenizi ziyaret ettiğinde, sunucunuz HTTP yanıt başlıkları (response headers) gönderir — tarayıcıya sayfayı nasıl işleyeceğini söyleyen meta veriler. Güvenlik başlıkları, bu başlıkların belirli bir alt kümesidir ve tarayıcıya güvenlik kurallarını uygulama talimatı verir.
Önemli nokta: Güvenlik başlıkları sunucunuzu değil, ziyaretçilerinizi korur. Tarayıcının, ziyaretçilerinize saldırmak için kötüye kullanılmasını engeller. Korunan ziyaretçiler, güvenen müşterilerdir.
En önemli 6 güvenlik başlığı
1. HSTS — HTTP Strict-Transport-Security
Strict-Transport-Security: max-age=31536000; includeSubDomains
HSTS, tarayıcıyı sitenize yalnızca HTTPS üzerinden bağlanmaya zorlar — birisi "http://" yazsa veya eski bir linke tıklasa bile. HSTS olmadan, aynı ağdaki bir saldırgan (ör. kafede açık WiFi) bağlantıyı HTTP'ye düşürüp verileri okuyabilir.
Tavsiye: max-age en az 1 yıl (31536000). Tüm alt alanlarınız HTTPS ise includeSubDomains ekleyin.
2. CSP — Content-Security-Policy
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'
CSP en güçlü ve en sık yanlış yapılandırılan güvenlik başlığıdır. Bir beyaz liste oluşturur: Tarayıcı kaynakları (betik, stil, resim, font) yalnızca belirtilen kaynaklardan yükleyebilir. İyi bir CSP; XSS, kod enjeksiyonu ve istenmeyen üçüncü taraf betiklerini engeller.
Dikkat: Hazır CSP şablonlarını kopyalamayın. Çok kısıtlayıcı = siteniz çalışmaz. Çok gevşek = koruma olmaz. Content-Security-Policy-Report-Only başlığıyla başlayın, hataları toplayın, sonra gerçek politikaya geçin.
3. X-Frame-Options
X-Frame-Options: DENY
Clickjacking saldırılarını engeller: Siteniz başka bir sayfada görünmez bir iframe içine gömülemez. Kullanıcı "Kapat"a tıkladığını sanır, aslında sizin sayfanıza tıklıyordur — tehlikeli sonuçlar doğabilir.
Tavsiye: Maksimum güvenlik için DENY. Kendi iframe'leriniz varsa SAMEORIGIN. Modern alternatif: CSP frame-ancestors direktifi.
4. X-Content-Type-Options
X-Content-Type-Options: nosniff
Küçük ama kritik: Tarayıcının dosya türünü "tahmin etmesini" (MIME sniffing) engeller. Bu başlık olmadan, saldırgan resim gibi görünen bir JavaScript dosyası yükleyebilir ve tarayıcı bunu çalıştırabilir.
Geçerli tek değer: nosniff. Kurun ve bir daha dokunmayın.
5. Referrer-Policy
Referrer-Policy: strict-origin-when-cross-origin
Bir ziyaretçi sitenizden başka bir siteye linkle gittiğinde, tarayıcının Referer başlığında ne kadar bilgi göndereceğini belirler. Yukarıdaki değer modern standarttır: Aynı siteye tam URL, harici linklere sadece alan adı — HTTPS'ten HTTP'ye geçişte hiçbir şey.
6. Permissions-Policy
Permissions-Policy: camera=(), microphone=(), geolocation=(), interest-cohort=()
Eskiden Feature-Policy olarak bilinirdi. Sitenizin ihtiyaç duymadığı tarayıcı özelliklerini kapatmanızı sağlar. Kamera, mikrofon, konum — bu API'leri kullanmıyorsanız kapatın. Saldırı yüzeyini azaltır ve gizliliği artırır.
Başlıklarınızı nasıl kontrol edersiniz
Tarayıcı geliştirici araçlarını açın (F12), Ağ (Network) sekmesine gidin, sayfayı yenileyin, ilk isteğe tıklayın ve Yanıt Başlıkları (Response Headers) bölümüne inin. Veya ücretsiz scanner'ımızı kullanarak tüm güvenlik başlıklarınızı tek tıkla kontrol edin.
Nginx yapılandırması (kopyala-yapıştır)
# /etc/nginx/snippets/security-headers.conf
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;Sonra: nginx -t && systemctl reload nginx
Apache (.htaccess)
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Frame-Options "DENY"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"6 başlık, 10 dakika — web sitesi güvenliğiniz için yapabileceğiniz en iyi zaman yatırımı.
Profesyonel yardım
Güvenlik başlıklarınızın doğru yapılandırıldığından emin olmak istiyorsanız, Deep Review (299 €) ile sitenizin tüm güvenlik başlıklarını kontrol ediyor, eksik veya hatalı olanları size raporluyoruz.