Güvenlik header'larını (CSP, HSTS, X-Frame-Options) backend'e dokunmadan ekleyebilir miyim?
Kısa cevap
Evet. Manage HTTP Security Headers aksiyonunda Response Headers listesinden Content-Security-Policy, Strict-Transport-Security (HSTS), X-Frame-Options, X-XSS-Protection, X-Content-Type-Options, Referrer-Policy ve Permissions-Policy seçilir; başlıklar hazır değerleriyle Kurum Servisinden dönen bütün yanıtlara eklenir. Hazır değer uygulamaya uymuyorsa (ör. dış CDN kullanan bir CSP) başlık On Response aşamasında Set HTTP Header ile özel değerle yazılır. HSTS, TLS Security Profile üzerinden de verilebilir.
Sorun: Güvenlik Başlıkları Eksik, Uygulamaya Dokunulamıyor
Güvenlik taramaları ve denetimler CSP, HSTS ve X-Frame-Options gibi başlıkların eksik olduğunu raporlar; uygulamayı değiştirmek her zaman mümkün ya da hızlı değildir. Başlıklar yanıt TR7'den geçerken, Kurum Servisine dokunmadan eklenir.
Çözüm: Dört Yöntem
Yöntemler HTTP vService'te çalışır ve birlikte kullanılabilir: hazır değeri uygun başlıklar Yöntem 1 ile, özel değer gerekenler Yöntem 2 ile eklenir.
| Durumunuz | Uygun yöntem |
|---|---|
| Hazır değerlerle hızlı kurulum | Yöntem 1: Manage HTTP Security Headers |
| Uygulamaya özel değer; Kurum Servisi aynı başlığı gönderse de tek başlık kalsın | Yöntem 2: Set HTTP Header (On response) |
| Kurum Servisi aynı başlığı hiç göndermiyor | Yöntem 3: Add HTTP Header (On response) |
| Yalnızca HSTS; süre ve alt alan adı ayarlı | Yöntem 4: TLS Security Profile → HSTS |
Yöntem 1: Manage HTTP Security Headers Önerilen
- Nasıl çalışır Seçilen başlıklar hazır değerleriyle bütün yanıtlara eklenir; değerler düzenlenemez, aksiyon koşul almaz.
- Nerede açılırLoad Balancer → Actions → Manage HTTP Security Headers → Response Headers
- Gereksinim En az bir seçim; hazır CSP'nin uygulamayla uyumu önceden denenir
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Actions → Add tıklanır (nasıl eklenir).
Action Name girilir, Action Type = Manage HTTP Security Headers seçilir.
Response Headers listesinden başlıklar işaretlenir. Seçenek etiketleri değerleri de gösterir:
| Seçenek | Yazılan değer | Kurum Servisi aynı başlığı gönderiyorsa |
|---|---|---|
| Content-Security-Policy | default-src 'self'; | Yerine geçer |
| Strict-Transport-Security (HSTS) | max-age=16000000; includeSubDomains; preload; (yalnızca HTTPS yanıtlarında) | Yerine geçer |
| X-Frame-Options | SAMEORIGIN | Yerine geçer |
| X-XSS-Protection | 1; mode=block | İkinci kopya eklenir |
| X-Content-Type-Options | nosniff | İkinci kopya eklenir |
| Referrer-Policy | no-referrer-when-downgrade | Yerine geçer |
| Permissions-Policy | interest-cohort=(); (Permission-Policy adıyla yazılır) | Kurum Servisinin Permissions-Policy başlığı değişmez; yanına ayrı başlık eklenir |
Konum, kamera gibi izinleri kısıtlayan bir Permissions-Policy gerekiyorsa başlık Yöntem 2 ile yazılır.
Add tıklanır.
Load Balancer → Load Balancer vService List ekranında HTTP vService seçilip Edit tıklanır.
Save tıklanır. Değişiklik açık bağlantılar kopmadan uygulanır; cluster'da varsayılan auto-sync ile eş cihaza da gönderilir (Manual Sync Mode açıksa Synchronize ile).
Doğrulama
curl -skI https://www.example.com/
Seçilen başlıklar tabloda yazılan değerlerle görünürTarayıcının geliştirici araçlarında Console sekmesine bakılır; CSP'nin engellediği kaynaklar burada listelenir.
CSP ihlali yok; sayfa bozulmadan yükleniyorYöntem 2: Set HTTP Header (On Response)
- Nasıl çalışır Başlık istenen değerle yazılır; Kurum Servisi aynı başlığı gönderse de tek başlık kalır.
- Nerede açılırLoad Balancer → Actions → Set HTTP Header
- Gereksinim Her başlık için ayrı aksiyon
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Actions → Add tıklanır.
Action Type = Set HTTP Header seçilir.
Execution Level = On response (kayıttan sonra değiştirilemez); Header to Edit = Content-Security-Policy; Header Content = default-src 'self'; script-src 'self' https://cdn.example.com.
Add tıklanır; her başlık için 1–4. adımlar tekrarlanır (ör. Permissions-Policy = camera=(), microphone=(), geolocation=()).
vService Edit ile açılır.
Details → Actions alanında aksiyonlar seçilir.
Save tıklanır. Aynı başlık Yöntem 1'de de seçiliyse listede sonra gelen aksiyonun değeri kalır.
Doğrulama
curl -skI https://www.example.com/ | grep -i '^content-security-policy'
Tek satır, özel değerYöntem 3: Add HTTP Header (On Response)
- Nasıl çalışır Başlık yanıta eklenir; Kurum Servisi aynı başlığı gönderiyorsa ikinci bir kopya oluşur.
- Nerede açılırLoad Balancer → Actions → Add HTTP Header
- Gereksinim Kurum Servisi aynı başlığı göndermiyor
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Actions → Add tıklanır.
Action Type = Add HTTP Header seçilir.
Execution Level = On response; Header to Add = Cross-Origin-Opener-Policy, Header Content = same-origin (bankacılık uygulaması senaryosu).
Add tıklanır.
vService Edit ile açılır.
Details → Actions alanında aksiyon seçilir.
Save tıklanır.
Doğrulama
curl -skI https://www.example.com/ | grep -i '^cross-origin-opener-policy'
Başlık tek kez görünürYöntem 4: TLS Security Profile → HSTS
- Nasıl çalışır HSTS başlığı vService'e atanan TLS güvenlik profilinden eklenir; süre, alt alan adları ve preload ayrı ayrı seçilir. Aynı vService'te Manage HTTP Security Headers'ın HSTS seçeneği de açıksa aksiyonun değeri geçerli olur.
- Nerede açılırCertificates & PKI → TLS Security Profiles → Frontend-only Settings → HSTS
- Gereksinim vService'te şifreli (HTTPS) frontend satırı ve SSL Security modülü
- vService tipi HTTP
Adım adım yapılandırma
Certificates & PKI → TLS Security Profiles → Add tıklanır (mevcut bir profil için Edit) (nasıl eklenir).
Frontend-only Settings bölümünde HSTS (Strict-Transport-Security header) (varsayılan kapalı) açılır; HSTS Duration (max-age) (varsayılan 180 gün) ve Include Subdomains (includeSubDomains) (varsayılan kapalı) ayarlanır. Ayrıntı: HSTS'i nasıl eklerim?
Yeni profilde Add, mevcut profil düzenlendiyse Edit tıklanır.
vService Edit ile açılır.
Details → SSL Security modülünde profil seçilir.
Save tıklanır.
Doğrulama
curl -skI https://www.example.com/ | grep -i '^strict-transport-security'
Strict-Transport-Security: max-age=…Sık Yapılan Hatalar
- Hazır CSP değerini denemeden açmak.
default-src 'self'dış CDN'leri, yazı tiplerini ve satır içi script'leri engelleyebilir; önce test ortamında denenir ya da Set HTTP Header ile uygun değer yazılır. - HSTS'in HTTP yanıtlarında da gönderileceğini sanmak. HSTS yalnızca HTTPS yanıtlarına eklenir; tarayıcı da yalnızca HTTPS üzerinden aldığı HSTS başlığını dikkate alır.
- Add ile çift başlık oluşturmak. Kurum Servisi başlığı zaten gönderiyorsa Add HTTP Header (ve Manage HTTP Security Headers'taki X-XSS-Protection, X-Content-Type-Options seçenekleri) ikinci bir kopya ekler; Set HTTP Header kullanılır.
- TR7'nin kendi ürettiği sayfalarda başlık beklemek. Başlıklar Kurum Servisinden dönen yanıtlara eklenir; TR7'nin ürettiği engelleme, yönlendirme ve hata sayfalarına eklenmez.
- SSL Labs puanıyla karıştırmak. Başlıklar ve TLS ayarlarının birlikte ele alınması için: SSL Labs'ten A+ almak için neler yapmalıyım?
Dokümantasyonda nasıl yapılır
