HTTP Güvenlik Başlıkları: HSTS, CSP ve X-Frame-Options
HTTP Güvenlik Başlıkları: HSTS, CSP ve X Frame Options, Güvenlik alanında sıkça karşılaşılan ve doğru uygulandığında fark yaratan konulardan biri. Bu yazı konuyu 5 temel noktada ele alıyor, çalışan bir uygulama örneği üzerinden ilerliyor, sonunda da uygulamada nelere dikkat edilmesi…
İçindekiler
HTTP Güvenlik Başlıkları: HSTS, CSP ve X-Frame-Options, Güvenlik alanında sıkça karşılaşılan ve doğru uygulandığında fark yaratan konulardan biri. Bu yazı konuyu 5 temel noktada ele alıyor, çalışan bir uygulama örneği üzerinden ilerliyor, sonunda da uygulamada nelere dikkat edilmesi gerektiğini özetliyor.
Konuya genel bakış
Tarayıcılar, sunucunun gönderdiği birkaç başlıkla pek çok saldırıya karşı kendiliğinden önlem alır: bağlantıyı her zaman HTTPS'e zorlar, sayfanın başka sitede çerçeve içinde açılmasını engeller, izin verilmeyen betikleri çalıştırmaz. Bu başlıklar birkaç satırlık yapılandırmayla eklenir ve güvenlik taramalarında ilk bakılan noktadır.
Bilmeniz gereken 5 temel nokta
- HSTS: Tarayıcı siteye bir yıl boyunca yalnızca HTTPS ile bağlanır; araya girme saldırıları zorlaşır.
- X-Frame-Options / frame-ancestors: Sayfanın başka sitede görünmez çerçevede açılıp tıklama tuzağına dönüşmesini engeller.
- nosniff: Tarayıcının dosya türünü tahmin edip yanlışlıkla betik olarak çalıştırmasını önler.
- CSP: Hangi kaynaktan betik, stil ve görsel yüklenebileceğini belirler; XSS etkisini büyük ölçüde azaltır.
- Önce rapor modu: CSP'yi Content-Security-Policy-Report-Only ile deneyip neyin engelleneceğini görün.
Örnek üzerinden inceleyelim
Aşağıdaki uygulama örneği, yukarıdaki noktaların gerçek bir kodda nasıl bir araya geldiğini gösteriyor:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; frame-ancestors 'self'"
</IfModule>Örnek bilinçli olarak kısa tutuldu; gerçek projede hata yönetimi ve günlükleme gibi katmanlar eklenmelidir.
Örneği kendi senaryonuza uyarladıktan sonra küçük bir denemeyle sonucu doğrulayın; tek seferde büyük değişiklik yapmayın.
Size ne kazandırır?
Kısaca özetlemek gerekirse:
- Saldırı yüzeyini daraltır ve olası veri sızıntılarının önüne geçer
- Güvenlik denetimlerinden daha kolay geçen bir kod tabanı sağlar
- Hataların canlı ortama çıkmadan fark edilmesine yardım eder
- Kullanıcı güvenini ve marka itibarını korur
Son söz
Bu yazı boyunca HTTP Güvenlik Başlıkları: HSTS, CSP ve X-Frame-Options konusunun temel taşlarını ve uygulamada dikkat edilmesi gerekenleri gördük. Özellikle HSTS ve Önce rapor modu başlıklarını uygulamaya geçirmek iyi bir başlangıç olur.
İlgili içerikler:
- Google Authenticator ile İki Adımlı Doğrulama (TOTP) Nasıl Çalışır?
- PHP PDO ile SQL Injection Koruması
- PHP ile Güvenli Dosya Yükleme: 8 Kontrol
Daha fazla uygulamalı içerik için Akademi derslerine ve blog yazılarına göz atabilirsiniz.
Yazar
Ferdi Giden @adminPHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.