Poyraz Hosting Logo
. . .

HTTP Güvenlik Başlıkları Basitçe: HSTS, CSP, X-Frame-Options ve Diğerleri (NGINX/Apache/Cloudflare Örnekleri)

Blog Listesine Dön

HTTP Güvenlik Başlıkları Basitçe: HSTS, CSP, X-Frame-Options ve Diğerleri (NGINX/Apache/Cloudflare Örnekleri)
Görüntülenme: 121

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 CertificatesHSTS (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şlemlerde Strict).

Set-Cookie örneği

Set-Cookie: sess=...; Path=/; Secure; HttpOnly; SameSite=Lax

8) cPanel’de hızlı uygulama

  1. cPanel → Domains → alan adınızdaki Manage Redirection/Force HTTPS seçeneklerini kullanın.

  2. cPanel → Software → Optimize Website bölümünü kapalı bırakın (sıkıştırma başlıklarıyla karışmasın).

  3. .htaccess’e yukarıdaki Apache örneklerini ekleyin.

  4. 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-Policy ekli

  • Set-Cookie bayrakları 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.

Kupon kodu kopyalandı!