Güvenlik Başlıkları (Security Headers) Nedir?
Kısa tanım
Güvenlik başlıkları, sunucunun HTTP yanıtlarına eklediği ve tarayıcıya sayfayı nasıl daha güvenli işleyeceğini söyleyen başlıkların ortak adıdır. Strict-Transport-Security siteyi yalnızca HTTPS ile açtırır, Content-Security-Policy hangi kaynakların yüklenebileceğini sınırlar, X-Content-Type-Options içerik türü tahminini kapatır, X-Frame-Options çerçeveye gömülmeyi engeller. XSS ve clickjacking gibi saldırıların etkisini azaltır, güvenli kodun yerini tutmaz.
Diğer adları: security headers, HTTP güvenlik başlıkları, güvenlik header'ları, HTTP security headers

Başlık başlık ne işe yaradıkları
Her biri bir HTTP başlığı olan bu ayarlar, tarayıcıdaki belirli bir davranışı kısıtlar. OWASP'ın HTTP Headers Cheat Sheet'indeki önerilere göre temel set şöyledir:
| Başlık | Ne yapar? | Tipik değer |
|---|---|---|
| Strict-Transport-Security | Tarayıcının siteye bir süre boyunca yalnızca HTTPS ile bağlanmasını sağlar. | max-age=63072000; includeSubDomains |
| Content-Security-Policy | Betik, stil, görsel ve çerçevelerin hangi kaynaklardan yüklenebileceğini belirler. | Siteye özel |
| X-Content-Type-Options | Tarayıcının dosya türünü tahmin etmesini (MIME sniffing) kapatır. | nosniff |
| X-Frame-Options | Sayfanın başka sitelerde iframe içinde gösterilmesini engeller. | DENY veya SAMEORIGIN |
| Referrer-Policy | Başka sitelere giderken adresin ne kadarının paylaşılacağını sınırlar. | strict-origin-when-cross-origin |
| Permissions-Policy | Kamera, mikrofon, konum gibi tarayıcı özelliklerini kapatır veya sınırlar. | camera=(), microphone=(), geolocation=() |
| Cross-Origin-Opener-Policy | Sayfayı başka kökenlerden açılan pencerelerden yalıtır. | same-origin |
Çerçeve kontrolünün modern karşılığı CSP'deki frame-ancestors direktifidir; X-Frame-Options eski tarayıcılar için birlikte gönderilebilir. Her ikisi de clickjacking'e karşı koruma sağlar.
Gerçek bir yanıtta nasıl görünür?
HTTP/2 200
content-type: text/html; charset=utf-8
strict-transport-security: max-age=63072000; includeSubDomains
content-security-policy: default-src 'self'; frame-ancestors 'none'
x-content-type-options: nosniff
referrer-policy: strict-origin-when-cross-origin
permissions-policy: camera=(), microphone=(), geolocation=()Tarayıcının DevTools → Network sekmesinde ana belgeye tıklayıp yanıt başlıklarına bakarak ya da curl -I https://alanadi.com komutuyla kendi sitenizi aynı şekilde inceleyebilirsiniz.
Artık eklenmemesi gerekenler
- X-XSS-Protection: Tarayıcıların eski XSS filtresini yönetiyordu. OWASP, bu başlığın bazı durumlarda güvenli sitelerde yeni açıklar yaratabildiğini belirtip
0değerini veya hiç gönderilmemesini önerir. XSS'e karşı asıl araç CSP'dir. - Public-Key-Pins (HPKP) ve Expect-CT: Kullanımdan kaldırıldı; yapılandırmada kaldıysa temizlenmeli.
- Server ve X-Powered-By: Güvenlik başlığı değildir ama yazılım ve sürüm bilgisini ifşa eder; kaldırılması veya genel bir değere çekilmesi önerilir.
Nereye ve nasıl eklenir?
Başlıklar uygulama çatısında (örneğin Next.js'te next.config içindeki headers()), web sunucusunda veya CDN katmanında tanımlanabilir. Tek bir yerde tanımlamak, çakışan ve tekrarlanan başlıkları önler. Nginx'te iki tuzak sık görülür: add_header varsayılan olarak yalnızca başarılı ve yönlendirme yanıtlarına eklenir, hata sayfalarında da gönderilmesi için always parametresi gerekir. Ayrıca bir location bloğunda tek bir add_header bile tanımlanırsa üst seviyedeki başlıklar o blokta miras alınmaz; 1.29.3 sürümüyle gelen add_header_inherit direktifi bu davranışı değiştirmeye izin verir.
server {
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
location /indir/ {
add_header Content-Disposition "attachment";
# Bu blokta yukarıdaki iki başlık artık gönderilmez!
}
}Başlıkların yapamadıkları
Güvenlik başlıkları zararı sınırlayan bir katmandır. Girdi doğrulaması yapılmayan bir form, yetki kontrolü olmayan bir API uç noktası veya güncellenmemiş bir eklenti, başlıklar kusursuz olsa da açık kalır. Bir tarama aracındaki “A+” notu da sitenin güvenli olduğunu değil, belirli başlıkların gönderildiğini gösterir. CSP gibi kısıtlayıcı başlıkları canlıya almadan önce rapor modunda denemek, siteyi bozmadan sorunları görmeyi sağlar. Hızlı bir kontrol için SEO Analiz Aracı CSP, nosniff, Referrer-Policy ve çerçeve koruması başlıklarının varlığını raporlar. Güncel öneriler OWASP HTTP Headers Cheat Sheet'te tutulur.

