Web uygulamalarında sunucu tarafı güvenlik kadar tarayıcıya gönderdiğiniz HTTP başlıkları da kritiktir. Aşağıda en etkili başlıkları “ne işe yarar + örnek yapılandırma + dikkat” formatında hızlıca toparladım.
1) HSTS — Strict-Transport-Security
Ne yapar? Tarayıcıya, alan adınıza yalnızca HTTPS ile bağlanmasını söyler.
-
Önerilen (başlangıç) değer:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Dikkat: Preload’a geçmeden önce tüm alt alanlarınız HTTPS olmalı.
NGINX
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Apache (.htaccess)
<IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" </IfModule>
Cloudflare: SSL/TLS → Edge Certificates → HSTS (gelişmiş) menüsünden açın.
2) İçerik Güvenlik Politikası — Content-Security-Policy (CSP)
Ne yapar? Hangi kaynaktan hangi tür içeriğin yüklenebileceğini tanımlar; XSS riskini ciddi azaltır.
-
Basit, güvenli bir başlangıç (gerektikçe genişletin):
Content-Security-Policy: default-src 'self'; img-src 'self' data: https:; script-src 'self' https: 'unsafe-inline'; style-src 'self' https: 'unsafe-inline'; connect-src 'self' https:;
Dikkat: Önce Report-Only moduyla test edin.
NGINX
add_header Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; script-src 'self' https: 'unsafe-inline'; style-src 'self' https: 'unsafe-inline'; connect-src 'self' https:;" always; # Test için: # add_header Content-Security-Policy-Report-Only "..." always;
Apache
<IfModule mod_headers.c> Header set Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; script-src 'self' https: 'unsafe-inline'; style-src 'self' https: 'unsafe-inline'; connect-src 'self' https:;" </IfModule>
Cloudflare: Transform Rules → HTTP Response Header Modification ile ekleyin veya WAF → Managed rules + Page Rules ile varyantlar.
3) MIME Sniffing’i kapat — X-Content-Type-Options: nosniff
Ne yapar? Tarayıcının içerik türünü “tahmin etmesini” engeller.
X-Content-Type-Options: nosniff
NGINX
add_header X-Content-Type-Options "nosniff" always;
Apache
Header set X-Content-Type-Options "nosniff"
4) Clickjacking’e karşı — X-Frame-Options / frame-ancestors
Ne yapar? Sitenizin başka bir sitede <iframe> ile gömülmesini kısıtlar.
-
Klasik başlık:
X-Frame-Options: SAMEORIGIN
-
CSP eşdeğeri (daha esnek):
Content-Security-Policy: frame-ancestors 'self';
5) Yönlendiren bilgisini sınırla — Referrer-Policy
Ne yapar? Hangi referrer bilgisinin gönderileceğini belirler.
-
Dengeli öneri:
Referrer-Policy: strict-origin-when-cross-origin
NGINX
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
Apache
Header set Referrer-Policy "strict-origin-when-cross-origin"
6) İzinler/Yetenekler — Permissions-Policy (eski Feature-Policy)
Ne yapar? Kamera, mikrofon, geolocation gibi API’ları kısıtlar.
-
Örnek:
Permissions-Policy: geolocation=(), camera=(), microphone=()
7) Güvenli Cookie bayrakları
Ne yapar? Oturum çerezlerini tarayıcıda korur.
-
Secure; HttpOnly; SameSite=Lax(veya kritik işlemlerdeStrict).
Set-Cookie örneği
Set-Cookie: sess=...; Path=/; Secure; HttpOnly; SameSite=Lax
8) cPanel’de hızlı uygulama
-
cPanel → Domains → alan adınızdaki Manage Redirection/Force HTTPS seçeneklerini kullanın.
-
cPanel → Software → Optimize Website bölümünü kapalı bırakın (sıkıştırma başlıklarıyla karışmasın).
-
.htaccess’e yukarıdaki Apache örneklerini ekleyin.
-
WordPress ise bir güvenlik başlıkları eklentisiyle (veya functions.php) aynı değerleri enjekte edebilirsiniz.
9) Cloudflare’da genel strateji
-
SSL/TLS: “Full (strict)” + HSTS (yukarıdaki değerlerle).
-
Rules → Transform Rules → Modify Response Header: CSP, Referrer-Policy, X-Content-Type-Options vb. başlıkları origin’i değiştirmeden eklemek için ideal.
-
Cache Rules: HTML’yi kısa TTL, statikleri uzun TTL tutun; başlık testlerini kolaylaştırır.
10) Devreye alma kontrol listesi
-
HTTP→HTTPS zorunlu, HSTS aktif
-
CSP önce Report-Only ile test edildi, console’da hata yok
-
nosniff,Referrer-Policy,Permissions-Policyekli -
Set-Cookiebayrakları doğru -
Üçüncü parti script/font alanları CSP’de yetkili
-
Alt alanlar, CDN ve panel alt yolları (örn.
/cpanel,/webmail) için çakışma yok
Örnek “hepsi bir arada” (NGINX)
# Güvenlik başlıkları add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; add_header Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; script-src 'self' https: 'unsafe-inline'; style-src 'self' https: 'unsafe-inline'; connect-src 'self' https:;" always; add_header X-Content-Type-Options "nosniff" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; add_header Permissions-Policy "geolocation=(), camera=(), microphone=()" always; # Çerçevelemeyi engelle add_header X-Frame-Options "SAMEORIGIN" always; # (veya) CSP ile: add_header Content-Security-Policy "frame-ancestors 'self'" always;
Sonuç
Bu başlıklar, ek bir uygulama kodu yazmadan tarayıcıda koruma katmanı sağlar. İlk etapta HSTS, nosniff, Referrer-Policy ve temel bir CSP ile başlayın; sonra izinleri sıkılaştırıp raporları izleyerek politikayı olgunlaştırın.