Manage HTTP Security Headers
Manage HTTP Security Headers Aksiyonu Nedir?
Manage HTTP Security Headers aksiyonu, Kurum Servislerinden dönen HTTP yanıtlarına güvenlik başlık bilgilerini otomatik olarak ekler. Bu başlıklar, modern web uygulamalarının güvenliğini artırmak için tarayıcılara talimatlar verir.
HTTP Güvenlik Başlıkları hakkında detaylı bilgi için Mozilla HTTP Headers sayfası kontrol edilebilir.
TIP
Manage HTTP Security Headers Aksiyonunda varsayılan olarak bulunmayan veya farklı değer (value) girilmek istenilen durumlarda Add HTTP Header aksiyonu (Execution Level → On Response) kullanılmalıdır.
Bu aksiyon yalnızca yanıt (response) aşamasında çalışır ve seçilen güvenlik başlıklarını Kurum Servisinden dönen yanıtlara ekler.
TR7'nin kendi ürettiği yanıtlar kapsam dışıdır
Başlıklar yalnızca Kurum Servisinden gelen yanıtlara uygulanır. TR7'nin kendisi tarafından üretilen yanıtlar (engelleme sayfaları, WAF blok yanıtları, CAPTCHA sayfaları, yönlendirmeler, gösterilen içerik sayfaları ve hata sayfaları) bu aksiyondan etkilenmez. Sunucu parmak izi temizliği de bu yanıtlarda çalışmaz.
Manage HTTP Security Headers Aksiyonunun Önemi
Güvenlik başlıkları, XSS saldırıları, clickjacking, MIME sniffing ve diğer yaygın web güvenlik tehditlerine karşı tarayıcı düzeyinde koruma sağlar. OWASP ve diğer güvenlik standartları, bu başlıkların kullanılmasını şiddetle önerir.
Manage HTTP Security Headers aksiyonu;
- XSS (Cross-Site Scripting) saldırılarına karşı koruma sağlar,
- Clickjacking saldırılarını engeller,
- MIME type sniffing zafiyetlerini kapatır,
- HTTPS kullanımını zorunlu kılar,
- Referrer bilgisi sızmasını kontrol eder,
- Sunucu parmakizi bilgilerini gizler.
Bu nedenle Manage HTTP Security Headers aksiyonu, web uygulamalarının güvenlik duruşunu güçlendirmek için kritik bir bileşendir.
Seçilebilir Güvenlik Başlıkları
Bu aksiyon ile aşağıdaki güvenlik başlıkları eklenebilir:
| Başlık | Açıklama |
|---|---|
| Content-Security-Policy | XSS ve veri enjeksiyon saldırılarına karşı koruma sağlar. Varsayılan değer: default-src 'self' |
| Strict-Transport-Security (HSTS) | Tarayıcıyı yalnızca HTTPS üzerinden bağlanmaya zorlar. Varsayılan değer: max-age=16000000; includeSubDomains; preload; |
| X-Frame-Options | Clickjacking saldırılarına karşı koruma sağlar. Varsayılan değer: SAMEORIGIN |
| X-XSS-Protection | Tarayıcının yerleşik XSS filtresini etkinleştirir. Varsayılan değer: 1; mode=block |
| X-Content-Type-Options | MIME type sniffing'i engeller. Varsayılan değer: nosniff |
| Referrer-Policy | Referrer bilgisinin nasıl paylaşılacağını kontrol eder. Varsayılan değer: no-referrer-when-downgrade |
| Permissions-Policy | Yalnızca interest-cohort=(); politikasını gönderir. Konum, kamera, mikrofon gibi izinleri kısıtlamaz; politika metni değiştirilemez |
| Remove Server Fingerprints | Server, X-Powered-By, X-AspNet-Version ve X-AspNetMvc-Version başlıklarını yanıttan temizler |
WARNING
Bu başlıklar istemci tarafında güvenliği artırır; ancak aynı zamanda tarayıcının içeriği yorumlama ve çalıştırma şeklini doğrudan değiştirdiği için uygulama davranışında beklenmeyen sonuçlar doğurabilir. Özellikle tüm başlıkların aynı anda agresif varsayılanlarla etkinleştirilmesi; sayfa tasarımında bozulma, bazı kaynakların yüklenmemesi, gömülü içeriklerin çalışmaması veya belirli tarayıcı özelliklerinin devre dışı kalması gibi etkiler yaratabilir.
Kullanılabildiği vService Tipleri
Çalışma Anı
Nasıl Eklenir?
Yeni bir Manage HTTP Security Headers Aksiyonu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:
- Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
- Load Balancer → Actions → Add adımları takip edilir.
- Aksiyon için benzersiz ve açıklayıcı bir isim girilir.
- Action Type olarak Manage HTTP Security Headers seçilir.
- Aksiyona ait ilgili konfigürasyonlar yapılandırılır.
Addbutonuna tıklanarak aksiyon eklenir.
Manage HTTP Security Headers Aksiyonu Ekleme Formu
Manage HTTP Security Headers Aksiyonu Ekleme Formu
INFO
Action Type
Aksiyon tipi olarak Manage HTTP security headers seçilir.
Aksiyon yalnızca yanıt aşamasında ve koşulsuz çalıştığından formda Execution Level, Rule Protocol, Conditions, Hit Counter ve Set Variable on Hit alanları bulunmaz.
INFO
Response Headers Zorunlu Varsayılan: Boş
Dönen yanıtlara eklenecek güvenlik başlıkları bu alandan seçilir. Birden fazla başlık aynı anda seçilebilir.
Seçilebilecek başlıklar:
- Content-Security-Policy (
default-src 'self') - Strict-Transport-Security (HSTS) (
max-age=16000000; includeSubDomains; preload;) - X-Frame-Options (
SAMEORIGIN) - X-XSS-Protection (
1; mode=block) - X-Content-Type-Options (
nosniff) - Referrer-Policy (
no-referrer-when-downgrade) - Permissions-Policy (
interest-cohort=();: yalnızca bu politika; diğer tarayıcı izinleri kısıtlanmaz) - Remove Server Fingerprints (
Server,X-Powered-By,X-AspNet-Version,X-AspNetMvc-Versionbaşlıklarını temizler)
TIP
Manage HTTP Security Headers Aksiyonunda varsayılan olarak bulunmayan veya farklı değer (value) girilmek istenilen durumlarda Add HTTP Header aksiyonu (Execution Level → On Response) kullanılmalıdır.
INFO
Form Butonları
Add
Add butonuna tıklanarak aksiyon ekleme işlemi tamamlanır.
Add & Repeat
Add & Repeat butonu ile aksiyon ekleme işlemi tamamlanır ve farklı konfigürasyonlarla ilgili pencereden çıkılmadan yeni bir aksiyon daha eklenebilir.
Aksiyon Eklendi
INFO
Mevcut Başlıkların Üzerine Yazılması
Kurum Servisi aynı başlığı zaten gönderiyorsa davranış başlığa göre değişir:
| Başlık | Davranış |
|---|---|
| Content-Security-Policy · Strict-Transport-Security · X-Frame-Options · Referrer-Policy · Permissions-Policy | Kurum Servisinin değeri silinir, TR7'nin değeri yazılır |
| X-XSS-Protection · X-Content-Type-Options | Mevcut başlık silinmez, ikinci bir başlık daha eklenir (yanıtta çift başlık oluşabilir) |
Aksiyonun vService başına sayı sınırı yoktur; birden fazla kez eklenmesi bu çift yazımı çoğaltır.
HSTS yalnızca şifreli bağlantılarda eklenir
Strict-Transport-Security başlığı yalnızca TLS üzerinden gelen isteklerin yanıtlarına eklenir; şifresiz HTTP dinleyicide hiç gönderilmez.
Bu seçenek işaretlendiğinde, güvenlik profilinde tanımlı HSTS ayarı varsa aksiyonun değeri geçerli olur ve profil ayarı uygulanmaz.
Gönderilen max-age değeri yaklaşık 185 gündür. Tarayıcı ön yükleme (preload) listelerine başvuru için genellikle en az bir yıl şartı arandığından, bu değer preload başvurusu için yeterli değildir.
WARNING
Manage HTTP Security Headers aksiyonu koşul gerektirmez ve tanımlandığı vService üzerinde koşulsuz (Always) olarak uygulanır.
Koşulsuz çalışan aksiyonlar, trafik içeriğine bağlı değerlendirme yapmadan, ilgili vService üzerindeki tüm trafiği veya davranışı doğrudan etkiler.
Canlı ortamlarda, bu tür aksiyonların devreye alınması öncesinde hedef servis davranışlarının ve olası etkilerin dikkatle değerlendirilmesi önerilir. Aksi durumda, beklenmeyen servis davranışları veya operasyonel sorunlar oluşabilir.
Operasyonel ve Güvenli Kullanım Önerileri
- Content-Security-Policy Dikkatli Kullanın.
default-src 'self'değeri, yalnızca aynı origin'den kaynak yüklenmesine izin verir. Harici CDN'ler, fontlar veya scriptler kullanılıyorsa bu değerin özelleştirilmesi gerekebilir. Aksi halde uygulama bozulabilir. - HSTS Kullanmadan Önce HTTPS Hazırlığını Tamamlayın. HSTS etkinleştirildiğinde, tarayıcılar siteye yalnızca HTTPS üzerinden bağlanır. HTTPS yapılandırması tam olarak çalışır durumda olmalıdır.
- Remove Server Fingerprints Kullanın. Sunucu parmakizi bilgilerinin (
Server: Apache/2.4.41,X-Powered-By: PHP/7.4vb.) kaldırılması, saldırganlara sunucu hakkında bilgi sızmasını önler. - Test ortamında doğrulanır. Özellikle Content-Security-Policy ve X-Frame-Options, bazı uygulamalarda beklenmeyen davranışlara neden olabilir; değişiklik canlı ortama alınmadan önce test edilir.
- Uygulamaya özel değerler gerekiyorsa Manual Action kullanılır. Bu aksiyondaki varsayılan değerler genel kullanım için uygundur; özel değerler gerektiğinde başlık, Add HTTP Header aksiyonuyla elle eklenir.
Canlı Ortamlarda Yaygın Kullanım Senaryoları
Aşağıdaki örnekler, ilgili aksiyonun gerçek sistemlerde en sık karşılaşılan kullanım senaryolarında nasıl uygulandığını göstermektedir. Bu senaryolar, canlı ortamlarda yaygın olarak tercih edilen ve sahada edinilmiş deneyimlere dayanan pratikleri temel alır.
Senaryo 1: Temel Web Uygulaması OWASP Compliance
Problem: E-ticaret sitesi güvenlik denetiminden geçiyor ve OWASP Top 10 gereksinimlerini karşılamıyor. Clickjacking, XSS ve MIME sniffing zafiyetleri tespit ediliyor. Kurum Servisi kodu değiştirmek çok zaman alacak, güvenlik başlıklarını TR7'den eklemek istiyorlar.
Çözüm: Temel güvenlik başlıklarını (X-Frame-Options, X-XSS-Protection, X-Content-Type-Options, Remove Server Fingerprints) ekleyerek OWASP uyumluluğu sağlayın.
Konfigürasyon: Response Headers → X-Content-Type-Options · X-Frame-Options · X-XSS-Protection · Remove Server Fingerprints
Sonuç:
- ✅ Clickjacking koruması → X-Frame-Options: SAMEORIGIN ile iframe saldırıları engellenir.
- ✅ XSS koruması → X-XSS-Protection: 1; mode=block ile tarayıcı XSS filtresi aktif olur.
- ✅ MIME sniffing koruması → X-Content-Type-Options: nosniff ile dosya tipi tahmin saldırıları engellenir.
- ✅ Sunucu gizleme → Server, X-Powered-By başlıkları temizlenir, saldırganlar sunucu versiyonunu öğrenemez.
- ✅ OWASP compliance → Temel güvenlik gereksinimlerini karşılar, security audit'i geçer.
Senaryo 2: HTTPS Geçişi Sonrası Tarayıcı HSTS Zorlaması
Problem: Bankacılık sitesi HTTP'den HTTPS'e geçti ancak kullanıcılar hala tarayıcı adres çubuğuna http:// yazarak siteye giriyor. SSL stripping saldırılarına açık durumdalar ve bazı kullanıcılar HTTP üzerinden bağlanmaya çalışıyor.
Çözüm: HSTS (Strict-Transport-Security) başlığını ekleyerek tarayıcıların siteye yalnızca HTTPS üzerinden bağlanmasını zorunlu kılın.
Konfigürasyon: Response Headers → Strict-Transport-Security (HSTS) · X-Content-Type-Options · X-Frame-Options · Remove Server Fingerprints
Sonuç:
- ✅ HTTPS zorunluluğu → Tarayıcı max-age süresince (yaklaşık 6 ay) siteye yalnızca HTTPS ile bağlanır.
- ✅ SSL stripping koruması → HTTP bağlantı denemeleri otomatik HTTPS'e upgrade edilir.
- ✅ Subdomain koruması → includeSubDomains ile tüm alt alan adları da HTTPS'e zorlanır.
- ✅ HSTS preload hazırlığı → preload parametresi ile Chrome HSTS preload list'ine ekleme için hazır.
- ❌ HTTP erişim → HTTP üzerinden site hiçbir şekilde açılmaz, HTTPS zorunludur.
Senaryo 3: XSS Zafiyeti Olan Legacy Uygulama CSP Koruması
Problem: Eski ASP.NET uygulamasında XSS (Cross-Site Scripting) zafiyeti var ve kodu hemen düzeltmek mümkün değil. Saldırganlar JavaScript enjeksiyonu yaparak kullanıcı oturumlarını çalıyor. Uygulama dışarıdan script yüklemiyor, sadece kendi kaynaklarını kullanıyor.
Çözüm: Content-Security-Policy başlığı eklenerek tarayıcının yalnızca aynı origin'den script çalıştırması sağlanır ve inline script'ler engellenir.
Konfigürasyon: Response Headers → Content-Security-Policy · X-XSS-Protection · X-Content-Type-Options · X-Frame-Options
Sonuç:
- ✅ XSS saldırı etkisi azalır → CSP default-src 'self' ile harici script yükleme engellenir.
- ✅ Inline script koruması → Saldırganların enjekte ettiği
<script>tagları çalışmaz. - ✅ Çift katmanlı koruma → CSP ve X-XSS-Protection birlikte çalışır.
- ⚠️ Inline script kullanımı → Uygulamada inline script varsa bozulur, harici dosyalara taşınmalı.
- ❌ CDN kullanımı → Harici CDN'lerden (jQuery, Bootstrap vb.) kaynak yüklenemez, 'self' kısıtlaması var.
Senaryo 4: KVKK/GDPR Uyumlu Gizlilik Odaklı Yapılandırma
Problem: Sağlık uygulaması KVKK/GDPR uyumluluğu sağlamalı. Referrer başlığı ile kullanıcı gezinme bilgisi üçüncü taraf sitelere sızıyor ve sunucu bilgisi yanıtlarda açıkça görünüyor.
Çözüm: Referrer-Policy ve Permissions-Policy başlıkları eklenerek dışarı sızan bilgi azaltılır.
Konfigürasyon: Response Headers → Referrer-Policy · Permissions-Policy · X-Content-Type-Options · Remove Server Fingerprints
Sonuç:
- ✅ Referrer koruması → no-referrer-when-downgrade ile HTTPS→HTTP geçişlerinde referrer sızmaz.
- ⚠️ Tarayıcı izinleri → Gönderilen politika yalnızca
interest-cohort=()içerir; konum, kamera ve mikrofon gibi izinler bu aksiyonla kısıtlanamaz. Bu izinlerin kısıtlanması gerekiyorsa politika Add HTTP Header ile elle tanımlanmalıdır. - ✅ KVKK/GDPR compliance → Kullanıcı gizliliği standartlarını karşılar.
- ✅ Sunucu gizleme → Remove Server Fingerprints ile sunucu bilgisi sızmaz.
Senaryo 5: Bankacılık/Finans Uygulaması Maksimum Güvenlik
Problem: Bankacılık uygulaması PCI-DSS compliance gerektiriyor ve maksimum güvenlik duruşu sağlanmalı. Tüm güvenlik başlıklarının aktif olması ve her türlü tarayıcı seviyesinde koruma gerekiyor. Ancak uygulama harici CDN kullanıyor, CSP ayarlanmalı.
Çözüm: Tüm güvenlik başlıkları etkinleştirilerek en yüksek koruma sağlanır; CSP için varsayılan değer yerine özel değer kullanılır.
Konfigürasyon:
1. Adım: Manage HTTP Security Headers aksiyonu ile temel başlıklar:
- Response Headers: Strict-Transport-Security (HSTS) · X-Frame-Options · X-XSS-Protection · X-Content-Type-Options · Referrer-Policy · Permissions-Policy · Remove Server Fingerprints
2. Adım: Add HTTP Header aksiyonu ile özel CSP:
- Execution Level: On Response
- Header to Add: Content-Security-Policy
- Header Content:
default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com;
Sonuç:
- ✅ Maksimum güvenlik → Tüm güvenlik başlıkları aktif, çok katmanlı koruma.
- ✅ HTTPS zorunluluğu → HSTS ile tüm trafikte HTTPS zorlanır.
- ✅ Clickjacking koruması → X-Frame-Options ile iframe saldırıları engellenir.
- ✅ XSS koruması → CSP ve X-XSS-Protection birlikte çalışır.
- ✅ Özel CSP politikası → Harici CDN'ler (jsDelivr, Google Fonts) izin listesinde, inline style kullanılabilir.
- ✅ PCI-DSS compliance → Tüm güvenlik gereksinimlerini karşılar.
- ⚠️ İki aksiyon gerekli → Varsayılan CSP yetersiz, özel değer için ayrı aksiyon eklenmeli.
