format_list_bulletedBu İçerikte Bahsedilen Konular
- arrow_rightGüvenlik Headerları (Security Headers) Rehberi: X-Frame-Options ve Dahası
- arrow_rightGüvenlik Headerları Nedir ve Neden Önemlidir?
- arrow_rightX-Frame-Options: Clickjacking Koruması
- arrow_rightX-Frame-Options Değerleri
- arrow_rightX-Frame-Options Nasıl Uygulanır?
- arrow_rightX-Content-Type-Options: MIME Sniffing Önleme
- arrow_rightStrict-Transport-Security (HSTS): HTTPS Zorunluluğu
- arrow_rightHSTS Yapılandırma Parametreleri
- arrow_rightContent-Security-Policy (CSP): Kapsamlı Koruma
- arrow_rightCSP Temel Direktifleri
- arrow_rightReferrer-Policy: Referans Bilgisi Kontrolü
- arrow_rightPermissions-Policy: Tarayıcı Özellik Kontrolü
- arrow_rightGüvenlik Header Karşılaştırması
- arrow_rightGüvenlik Header Testi Nasıl Yapılır?
- arrow_rightYaygın Hatalar ve Çözümler
- arrow_right1. Header Eksikliği
- arrow_right2. Yanlış Değer Kullanımı
- arrow_right3. CSP Yanlış Yapılandırması
- arrow_right4. HTTP ve HTTPS Tutarsızlığı
Güvenlik Headerları (Security Headers) Rehberi: X-Frame-Options ve Dahası
Web güvenliği, dijital varlıklarınızı korumanın en kritik unsurlarından biridir. Güvenlik headerları, sunucudan tarayıcıya gönderilen HTTP yanıt başlıkları olarak, web sitenizin güvenlik seviyesini doğrudan etkiler. Bu rehberde, en önemli güvenlik headerlarını ve bunları nasıl doğru şekilde yapılandıracağınızı detaylı olarak ele alacağız.
Güvenlik Headerları Nedir ve Neden Önemlidir?
Güvenlik headerları, web sunucunuzun tarayıcıya gönderdiği HTTP yanıt başlıklarıdır. Bu headerlar, tarayıcıya web sitesinin nasıl davranması gerektiğini bildirir ve çeşitli saldırılara karşı koruma sağlar. OWASP (Open Web Application Security Project) verilerine göre, web uygulamalarının %80'inden fazlası en az bir güvenlik açığı içermektedir.
Doğru yapılandırılmış güvenlik headerları:
- XSS (Cross-Site Scripting) saldırılarını önler
- Clickjacking saldırılarına karşı koruma sağlar
- Man-in-the-Middle saldırılarını engeller
- İçerik türü karışıklıklarını önler
- SEO performansını artırır (Google, güvenli siteleri tercih eder)
Cloud sunucu altyapısı kullanırken, güvenlik headerlarının doğru yapılandırılması sunucu güvenliğinizin temel taşlarından birini oluşturur. Cloud sunucu çözümleri ile birlikte güvenlik headerlarını uygulamak, çok katmanlı bir güvenlik straratejisi oluşturmanıza olanak tanır.
X-Frame-Options: Clickjacking Koruması
X-Frame-Options headerı, web sitenizin başka sitelerde iframe içinde görüntülenmesini kontrol eder. Bu header, clickjacking saldırılarına karşı en etkili koruma mekanizmasıdır.
X-Frame-Options Değerleri
Bu header üç farklı değer alabilir:
| Değer | Açıklama | Kullanım Senaryosu |
|---|---|---|
| DENY | Site hiçbir şekilde iframe içinde görüntülenemez | |
| SAMEORIGIN | Yalnızca aynı domainden gelen iframe'lere izin verilir | |
| ALLOW-FROM uri | Belirli bir URI'den gelen iframe'lere izin verilir |
X-Frame-Options Nasıl Uygulanır?
Apache sunucular için .htaccess dosyasına ekleyin:
Header always set X-Frame-Options "SAMEORIGIN"
Nginx için nginx.conf dosyasına ekleyin:
add_header X-Frame-Options "SAMEORIGIN" always;IIS web.config dosyasında:
<customHeaders> <add name="X-Frame-Options" value="SAMEORIGIN" /> </customHeaders>X-Content-Type-Options: MIME Sniffing Önleme
X-Content-Type-Options headerı, tarayıcının içerik türünü otomatik olarak tahmin etmesini (MIME sniffing) engeller. Bu özellik, özellikle kullanıcı yükleme alanları bulunan siteler için kritik öneme sahiptir.
Tek geçerli değeri "nosniff"tür. Bu değer tarayıcıya, sunucu tarafından belirtilen içerik türüne kesinlikle uyması gerektiğini bildirir.
Örnek yapılandırma:
Header always set X-Content-Type-Options "nosniff"Bu header, zararlı dosyaların yüklenmesi ve çalıştırılması riskini önemli ölçüde azaltır. Özellikle dosya yükleme formları içeren e-ticaret siteleri ve web uygulamaları için temel bir güvenlik gereksinimidir.
Strict-Transport-Security (HSTS): HTTPS Zorunluluğu
HSTS (Strict-Transport-Security), web sitesinin yalnızca HTTPS bağlantıları üzerinden erişilebilir olmasını zorunlu kılar. Bu header, man-in-the-middle (MITM) saldırılarını önlemede kritik rol oynar.
HSTS Yapılandırma Parametreleri
| Parametre | Açıklama |
|---|---|
| max-age | Süre (saniye cinsinden, önerilen: 31536000 = 1 yıl) |
| includeSubDomains | Tüm alt domainler için HSTS'yi etkinleştirir |
| preload | HSTS preload listeye katılım için gereklidir |
Örnek HSTS yapılandırması:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
SSL sertifikalarınızı doğru şekilde yapılandırmak, HSTS'nin etkili olması için ön koşuldur. SSL sertifikası rehberimizden daha fazla bilgi alabilirsiniz.
Content-Security-Policy (CSP): Kapsamlı Koruma
Content-Security-Policy, web uygulamaları için en kapsamlı güvenlik headerıdır. CSP, hangi kaynakların yüklenebileceğini tanımlayarak XSS ve veri enjeksiyon saldırılarını önler.
CSP Temel Direktifleri
| Direktif | Açıklama |
|---|---|
| default-src | Tüm kaynak türleri için varsayılan politika |
| script-src | JavaScript kaynaklarını kontrol eder |
| style-src | CSS stil dosyalarını kontrol eder |
| img-src | Görsel kaynaklarını kontrol eder |
| connect-src | AJAX, WebSocket bağlantılarını kontrol eder |
| frame-src | iframe kaynaklarını kontrol eder |
Örnek CSP yapılandırması:
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:;"
Gelişmiş bir CSP politikası oluşturmak, sitenizin güvenlik duruşunu önemli ölçüde güçlendirir. Ancak yanlış yapılandırma, sitenizin düzgün çalışmamasına neden olabileceğinden dikkatli olunmalıdır.
Referrer-Policy: Referans Bilgisi Kontrolü
Referrer-Policy headerı, kullanıcılar başka sitelere yönlendirildiğinde hangi bilgilerin paylaşılacağını kontrol eder. Bu header, kullanıcı gizliliğini korur ve hassas URL'lerin sızmasını önler.
Olası değerler:
- no-referrer: Referrer bilgisi hiç gönderilmez
- no-referrer-when-downgrade: HTTPS'den HTTP'ye geçişte gönderilir (varsayılan)
- same-origin: Yalnızca aynı kaynak için gönderilir
- strict-origin-when-cross-origin: Güvenli kaynaklar arasında gönderilir
- strict-origin-when-cross-origin: En gizli seçenek
Önerilen yapılandırma:
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Permissions-Policy: Tarayıcı Özellik Kontrolü
Permissions-Policy (eski adıyla Feature-Policy), web sitesinin hangi tarayıcı özelliklerini kullanabileceğini tanımlar. Bu header, gereksiz yetkilerin önlenmesini sağlar.
Yaygın kullanılan özellikler:
- geolocation: Konum verisi erişimi
- camera: Kamera erişimi
- microphone: Mikrofon erişimi
- payment: Ödeme API erişimi
Örnek yapılandırma:
Header always set Permissions-Policy "geolocation=(), camera=(), microphone=()"
Güvenlik Header Karşılaştırması
| Header | Koruma Türü | Önem Düzeyi | Uygulama Zorluğu |
|---|---|---|---|
| X-Frame-Options | Clickjacking | Yüksek | Kolay |
| X-Content-Type-Options | MIME Sniffing | Orta | Kolay |
| Strict-Transport-Security | MITM, HTTPS zorunluluğu | Çok Yüksek | Orta |
| Content-Security-Policy | XSS, Veri Enjeksiyonu | Çok Yüksek | Zor |
| Referrer-Policy | Gizlilik | Orta | Kolay |
| Permissions-Policy | Özellik kontrolü | Orta | Orta |
Güvenlik Header Testi Nasıl Yapılır?
Güvenlik headerlarınızı test etmek için çeşitli araçlar kullanabilirsiniz:
- Security Headers (securityheaders.com): Kapsamlı analiz sunar
- SSL Labs SSL Test: SSL/TLS yapılandırmasını kontrol eder
- Google Chrome DevTools: Network sekmesinden headerları inceleyebilirsiniz
- Mozilla Observatory: Güvenlik duruşunuzu puanlar
Bu testleri düzenli olarak çalıştırarak, yapılandırmanızın güncel tehditlere karşı etkili olduğundan emin olabilirsiniz. Özellikle sunucu güvenliği konusunda ek katmanlar eklemek, kapsamlı bir koruma sağlar.
Yaygın Hatalar ve Çözümler
1. Header Eksikliği
Birçok sunucu varsayılan olarak hiçbir güvenlik headerı içermez. Tüm headerları kontrol edip eksik olanları ekleyin.
2. Yanlış Değer Kullanımı
Örneğin, X-Frame-Options için 'ALLOW-FROM' artık modern tarayıcılarda desteklenmemektedir. 'SAMEORIGIN' veya 'DENY' kullanın.
3. CSP Yanlış Yapılandırması
Çok katı CSP politikaları sitenizin çalışmasını engelleyebilir. Aşamalı olarak uygulayın ve 'report-uri' ile sorunları izleyin.
4. HTTP ve HTTPS Tutarsızlığı
HSTS ve diğer header'ların hem HTTP hem HTTPS için aynı şekilde yapılandırıldığından emin olun.