Güvenlik başlıkları nedir?
Güvenlik başlıkları, tarayıcılara bir web sitesinin içeriğini işlerken nasıl davranmaları gerektiğini bildiren HTTP yanıt başlıklarıdır. Yaygın web güvenlik açıklarına karşı korumayı güçlendirir; siteler arası komut dosyası çalıştırma (XSS), tıklama korsanlığı, içerik enjeksiyonu ve protokol düşürme saldırılarını önlemeye yardımcı olur. Doğru yapılandırılmış güvenlik başlıkları, derinlemesine savunma yaklaşımının temel parçalarındandır.Temel güvenlik başlıkları
HSTS (Strict-Transport-Security) başlığı
HTTPS bağlantılarını zorunlu kılar:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
- Protokol düşürme saldırılarını önler
- Karışık içeriği engeller
- SSL sıyırma saldırılarına karşı korur
CSP (Content-Security-Policy) başlığı
Kaynakların yüklenmesini denetler:
Content-Security-Policy: default-src 'self'; script-src 'self' trusted.com; style-src 'self' 'unsafe-inline'
- XSS saldırılarını önler
- Komut dosyası kaynaklarını denetler
- Yetkisiz kaynakları engeller
X-Frame-Options başlığı
Tıklama korsanlığını önler:
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
- Sitenin çerçeve içinde gösterilmesini engeller
- Kullanıcı arayüzü yeniden yönlendirme saldırılarına karşı korur
X-Content-Type-Options başlığı
MIME türü sezme işlemini önler:
X-Content-Type-Options: nosniff
- Tarayıcıyı belirtilen Content-Type değerine uymaya zorlar
- Yanlış yorumlanan dosyalar üzerinden komut dosyası enjeksiyonunu önler
Ek güvenlik başlıkları
| Başlık | Amaç | Örnek değer |
|---|---|---|
| X-XSS-Protection | XSS filtresi (eski) | 1; mode=block |
| Referrer-Policy | Yönlendiren bilgilerini denetleme | strict-origin-when-cross-origin |
| Permissions-Policy | Özellik kısıtlamaları | geolocation=(), camera=() |
| Cross-Origin-Opener-Policy | Süreç yalıtımı | same-origin |
| Cross-Origin-Embedder-Policy | Kaynak yalıtımı | require-corp |
Uygulama örnekleri
Nginx yapılandırması
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Content-Security-Policy "default-src 'self'" always;
Apache yapılandırması
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Güvenlik başlıkları ve alan adı sağlığı
Başlıklar alan adları için neden önemlidir?
- Alan adınızı ziyaret eden kullanıcıları korur
- Alan adının itibarının zarar görmesini önler
- Uyumluluk gereksinimlerini karşılamaya yardımcı olur
- Yaygın saldırılara karşı savunma sağlar
Güvenlik başlıklarını test etme
Uygulamayı doğrulamak için kullanılabilecek araçlar:
- securityheaders.com
- Mozilla Observatory
- SSL Labs
- Chrome DevTools Network sekmesi
En iyi uygulamalar
1. HSTS ile başlayın: HTTPS zorlaması için temel adımdır
2. CSP'yi aşamalı uygulayın: Önce yalnızca raporlama moduyla başlayın
3. Kapsamlı test yapın: Başlıklar işlevleri bozabilir
4. Önyükleme listelerini kullanın: Alan adını tarayıcı önyükleme listelerine gönderin
5. İhlalleri izleyin: CSP raporlama uç noktalarından yararlanın
6. Düzenli denetim yapın: Güvenlik gereksinimleri zamanla değişir
Yaygın derecelendirme ölçütleri
| Derece | Tipik gereksinimler |
|---|---|
| A+ | Tüm kritik başlıklar, HSTS önyüklemesi |
| A | HSTS, CSP, X-Frame-Options, X-Content-Type |
| B | Bazı başlıklar eksik |
| C/D | Asgari güvenlik başlıkları |
| F | Güvenlik başlığı yok |
Güvenlik başlıkları, sunucu tarafı güvenlik önlemlerini tamamlayan ve tarayıcı tarafından uygulanan koruma sağlayan web uygulaması güvenliğinin kritik bir katmanıdır.