
Sitenizin güvenliği yalnızca sunucuda bitmiyor. Tarayıcıya gönderdiğiniz birkaç HTTP başlığı, kullanıcı tarafındaki koca bir saldırı sınıfını kapatabiliyor.
Bu yazı, güvenlik başlıklarının ne yaptığını ve hosting hesabınızda nasıl tanımlanacağını ele alıyor.
Temel Mantık
Güvenlik başlıkları, sunucunun tarayıcıya verdiği talimatlardır:
- Bu sayfayı çerçeve içinde gösterme.
- Yalnızca şu kaynaklardan betik yükle.
- Bu siteye her zaman şifreli bağlan.
- Dosya türünü tahmin etme, söylediğimi kullan.
- Adres bilgisini dışarıya taşıma.
Bu talimatların ortak özelliği şudur: koruma sunucuda değil, kullanıcının tarayıcısında uygulanır.
Dolayısıyla saldırganın sunucunuza erişmesine gerek olmayan saldırı biçimlerini — çerçeveleme, betik enjeksiyonu, protokol düşürme — engellerler.
Çerçeveleme Koruması
Sitenizin başka bir sayfanın içine görünmez bir çerçeve olarak yerleştirilmesi, tıklama hırsızlığına imkân tanır:
- Saldırgan kendi sayfasında sizin sitenizi görünmez bir çerçevede açar
- Üstüne kendi düğmelerini yerleştirir
- Kullanıcı sahte düğmeye tıkladığını sanır
- Gerçekte sizin sitenizde bir işlem yapar
Koruma basittir: sitenizin çerçeve içinde gösterilmesini yasaklayan bir başlık göndermek, bu saldırıyı tamamen kapatır.
İstisna gerekiyorsa — örneğin kendi alt alan adınızda gömülü kullanım varsa — yalnızca izin verilen kaynakları belirten bir kural tanımlanabilir.
İçerik Güvenlik Politikası
En güçlü ama en zahmetli başlıktır. Yaptığı iş, sayfanın hangi kaynaklardan ne yükleyebileceğini sınırlamaktır:
| Kural türü | Neyi kontrol eder |
|---|---|
| Betik kaynakları | JavaScript nereden yüklenebilir |
| Stil kaynakları | CSS nereden yüklenebilir |
| Görsel kaynakları | Resimler nereden gelebilir |
| Bağlantı hedefleri | Sayfa nereye istek yapabilir |
| Çerçeve izinleri | Neyi gömebilir, kim gömebilir |
Doğru yapılandırıldığında, sayfanıza enjekte edilen bir betik çalışmaz — çünkü izin verilen kaynak listesinde değildir. Bu, betik enjeksiyonu saldırılarına karşı en güçlü savunmadır.
Politikayı Kademeli Kurmak
Bu başlığı doğrudan zorlayıcı modda açmak siteyi bozar. Doğru sıra:
- Önce yalnızca rapor modunda açın. Hiçbir şey engellenmez.
- İhlal raporlarını toplayın. Neler engellenecekti?
- Meşru kaynakları kurala ekleyin.
- Rapor sıfırlanana kadar sürdürün.
- Ardından zorlayıcı moda geçin.
Birinci madde bu başlığın en değerli özelliğidir: rapor modu, politikanın neyi engelleyeceğini siteyi hiç bozmadan gösterir.
Bu aşama atlanırsa, canlı sitede aniden bozulan bir düzen veya çalışmayan bir form ile karşılaşırsınız — üstelik nedeni tarayıcı konsolunda gizli kalır.
Şifreli Bağlantı Zorunluluğu
Bu başlık tarayıcıya "bu siteye bir daha asla şifresiz bağlanma" der:
- Kullanıcı ilk kez HTTPS ile bağlanır
- Başlığı alır ve kaydeder
- Sonraki ziyaretlerde şifresiz denemeye izin vermez
- Yönlendirme beklenmeden doğrudan şifreli gider
Kazanç, yönlendirme anındaki açığı kapatmaktır: şifresiz istekten şifreliye yönlendirme arasında geçen kısa an, araya girme saldırısı için bir fırsattır ve bu başlık o fırsatı ortadan kaldırır.
Dikkat: bu başlık bir kez gönderildiğinde tarayıcıda süresi dolana kadar kalır. Sertifikanız sorunlu hâle gelirse siteye erişilemez. Bu yüzden önce kısa bir süreyle başlayıp, her şeyin sağlam olduğundan emin olduktan sonra süreyi uzatmak doğru yaklaşımdır.
Diğer Başlıklar
Kurulumu kolay, faydası net olanlar:
| Başlık işlevi | Önerilen davranış |
|---|---|
| Tür tahmini engelleme | Her zaman açık |
| Yönlendiren bilgisi kontrolü | Sınırlı bilgi gönder |
| Tarayıcı özellik izinleri | Kullanmadıklarını kapat |
| Sunucu bilgisi gizleme | Sürüm bilgisini yayma |
İkinci satır bir gizlilik önlemidir: varsayılan davranışta, sitenizden başka bir siteye tıklayan kullanıcının hangi sayfadan geldiği karşı tarafa bildirilir ve bu adres özel bilgi içerebilir.
Üçüncü satır ise gereksiz yetkileri kapatır — sitenizin kameraya, mikrofona veya konum bilgisine ihtiyacı yoksa, bunları açıkça kapatmak enjekte edilen bir betiğin bunları istemesini engeller.
Hosting Hesabında Tanımlama
Bu başlıklar iki yerden gönderilebilir:
- Web sunucusu yapılandırma dosyasından — tercih edilen yöntem.
- Uygulama kodundan — çıktı başlamadan önce.
Birinci yöntem daha güvenilirdir çünkü yalnızca PHP sayfalarına değil, tüm dosyalara uygulanır — görseller, stil dosyaları ve statik sayfalar dahil.
Paylaşımlı hostingde bu genellikle dizin bazlı yapılandırma dosyasıyla yapılır. Sunucu türüne göre söz dizimi değişir; Windows hosting ve Linux tabanlı paketlerde kullanılan yapılandırma dosyaları farklıdır, ancak sonuç aynıdır.
Doğrulama
Başlıkların gerçekten gönderildiğini kontrol edin:
- Tarayıcı geliştirici araçlarında ağ sekmesini açın
- Ana sayfa isteğini seçin
- Yanıt başlıklarını inceleyin
- Bir de statik dosya isteğini kontrol edin
- Konsolda politika ihlali uyarısı var mı bakın
Dördüncü madde önemli bir farkı ortaya çıkarır: başlıkları uygulama kodundan gönderiyorsanız, statik dosyalarda görünmezler — bu, korumanın kısmi olduğu anlamına gelir.
Sonuç
Güvenlik başlıklarının ortak özelliği, korumanın sunucuda değil kullanıcının tarayıcısında uygulanmasıdır — bu yüzden sunucunuza hiç dokunmayan saldırı biçimlerini engellerler. En güçlüsü içerik güvenlik politikasıdır ama doğrudan zorlayıcı modda açmayın: önce rapor modunda çalıştırıp neyin engelleneceğini siteyi bozmadan görün. Şifreli bağlantı zorunluluğunu ise kısa süreyle başlatın, sertifikanız sorun çıkarırsa siteye erişilemez hâle gelir. Başlıkları uygulama kodundan değil sunucu yapılandırmasından gönderin — aksi hâlde statik dosyalar korumasız kalır.
Sıkça Sorulan Sorular (SSS)
Başlıkları nereden tanımlamalıyım?
Mümkünse web sunucusu yapılandırma dosyasından. Bu yöntem tüm dosyalara uygulanır — görseller, stil dosyaları ve statik sayfalar dahil. Uygulama kodundan gönderirseniz yalnızca PHP çıktısı korunur, statik içerik açıkta kalır.
İçerik güvenlik politikası sitemi bozar mı?
Doğrudan zorlayıcı modda açarsanız büyük ihtimalle bozar. Önce rapor modunda çalıştırın — hiçbir şey engellenmez, yalnızca neyin engelleneceği raporlanır. Meşru kaynakları kurala ekleyip raporlar sıfırlandıktan sonra zorlayıcı moda geçin.
Şifreli bağlantı zorunluluğunun riski var mı?
Var. Başlık bir kez gönderildiğinde tarayıcıda süresi dolana kadar kalır ve sertifikanız sorunlu hâle gelirse siteye erişilemez. Bu yüzden kısa bir süreyle başlayın, her şeyin sağlam çalıştığından emin olduktan sonra süreyi uzatın.
Hangi başlıklarla başlamalıyım?
Kurulumu kolay ve riski düşük olanlarla: çerçeveleme koruması, tür tahmini engelleme ve yönlendiren bilgisi kontrolü. Bunlar birkaç satırda tanımlanır ve neredeyse hiçbir siteyi bozmaz. İçerik güvenlik politikasını en sona bırakın.