PHP
Security headers (CSP, HSTS)
Content-Security-Policy, HSTS ve X-Content-Type-Options başlıklarını yapılandırmayı öğrenirsin.
CSP ne işe yarar?
Content-Security-Policy (CSP) tarayıcıya hangi kaynakların yüklenmesine izin verildiğini söyler. default-src 'self' tüm kaynakları aynı kökene kısıtlar; script-src, style-src, img-src ile daha ince ayar yapılır. CSP, inline script ve style'i varsayılan olarak engeller; bu yüzden nonce veya hash eklemen gerekir.
Raporlama için report-uri direktifi kullanılır. CSP, XSS saldırılarının etkisini büyük ölçüde azaltır; tek bir yanlış kaçış bile script enjeksiyonunu engeller. Üretimde küçük adımlarla başla: önce yalnızca rapor modunda çalış, ihlalleri düzelt, sonra zorla.
HSTS ve X-Content-Type-Options
Strict-Transport-Security (HSTS) tarayıcıya yalnızca HTTPS üzerinden bağlanmasını söyler; max-age süresi boyunca HTTP düşürme saldırısı (downgrade) engellenir. includeSubDomains tüm alt alanları kapsar; preload tarayıcının yerleşik listesine eklenmesini sağlar. Yalnızca HTTPS üzerinde çalışır.
X-Content-Type-Options: nosniff tarayıcının bildirilen MIME türünden sapmasını engeller; eski tarayıcılarda MIME sniffing XSS vektörünü kapatır. İki başlık birlikte gönderilir; header() çağrısı çıktıdan önce yapılmalıdır.
Uygulama Üç güvenlik başlığı gönder
header() ile üç başlık gönder: Content-Security-Policy: default-src 'self'; object-src 'none', X-Content-Type-Options: nosniff ve Strict-Transport-Security: max-age=31536000; includeSubDomains. Sonra $msg değişkenini echo ile yazdır.
Örnek çözümü göster
default-src 'self'; object-src 'none'"); header("X-Content-Type-Options: nosniff"); header("Strict-Transport-Security: max-age=31536000; includeSubDomains"); yaz. $msg = "başlıklar gönderildi"; tanımla, echo $msg . "\n"; ile yazdır.
Örnek çözüm:
<?php
header("Content-Security-Policy: default-src 'self'; object-src 'none'");
header("X-Content-Type-Options: nosniff");
header("Strict-Transport-Security: max-age=31536000; includeSubDomains");
$msg = "başlıklar gönderildi";
echo $msg . "\n";
Kendini test et
-
MIME sniffing'i önleyen başlık hangisi?
- X-Content-Type-Options: nosniff
- Content-Security-Policy: default-src 'self'
- Strict-Transport-Security: max-age=31536000
- X-Frame-Options: DENY
Cevabı göster
X-Content-Type-Options: nosniff — Doğru. X-Content-Type-Options: nosniff MIME sniffing'i engeller.
-
Güvenlik başlıklarını eşleştir
- Content-Security-Policy
- Kaynak kısıtlaması
- Strict-Transport-Security
- HTTPS zorlaması
- X-Content-Type-Options
- MIME sniffing önü
- max-age=31536000
- Bir yıl HSTS
-
X-Content-Type-Options başlığını gönder
header("____: nosniff");
Cevabı göster
header("X-Content-Type-Options: nosniff");
Sıradaki ders: Session fixation korunması