public_html içinde tutulmaması gereken yedek, veritabanı, log ve yapılandırma dosyalarını öğrenin; güvenli sunucu yönetimi için pratik kontrol adımlarını uygulayın.
Web sitenizin kök dizini olan public_html, tarayıcı üzerinden erişilebilen alandır. Bu nedenle burada bulunan her dosya, doğru yapılandırılmamışsa doğrudan görüntülenebilir, indirilebilir veya kötü niyetli kişiler tarafından analiz edilebilir. Özellikle yapılandırma, yedek, günlük ve özel anahtar içeren dosyaların bu dizinde tutulması güvenlik açısından risk oluşturur. Doğru dosya konumlandırması, yalnızca site güvenliği için değil, sürdürülebilir bir hosting yönetimi için de kritik bir adımdır.
public_html dışına taşınması gereken dosyaları belirlerken temel ölçüt şudur: Ziyaretçinin tarayıcıdan erişmesine gerek olmayan her dosya, mümkünse web kök dizininin dışında tutulmalıdır. Uygulama bu dosyalara sunucu tarafında erişebilir; ancak kullanıcı doğrudan URL ile ulaşamamalıdır.
public_html, web sunucusunun dış dünyaya açtığı dizindir. Örneğin siteadi.com/dosya.zip gibi bir adresle bu dizindeki dosyalara erişilebilir. Dosya listeleme kapalı olsa bile, dosya adı tahmin edilebiliyorsa indirme riski devam eder.
Bu durum özellikle eski yedekler, veritabanı çıktıları, hata kayıtları veya API anahtarları için tehlikelidir. Bir dosyanın bağlantısı menüde görünmüyor diye güvenli olduğu varsayılmamalıdır. Güvenli yaklaşım, hassas dosyaları erişilebilir alandan tamamen çıkarmaktır.
.zip, .tar, .gz, .rar uzantılı site yedekleri public_html içinde bırakılmamalıdır. Bu dosyalar çoğu zaman tüm tema, eklenti, medya ve yapılandırma dosyalarını içerir. Bir saldırgan bu arşivi indirirse sitenin yapısını, kullanılan eklentileri ve olası zayıf noktaları kolayca inceleyebilir.
Yedekleri mümkünse kullanıcı ana dizininde, web erişimine kapalı bir klasörde saklayın. Daha güvenli bir yöntem olarak uzaktan yedekleme alanı veya şifreli depolama tercih edilebilir.
.sql, .sql.gz veya benzeri veritabanı çıktıları kesinlikle public_html içinde tutulmamalıdır. Bu dosyalar kullanıcı e-postaları, parola hashleri, sipariş kayıtları, yönetici bilgileri ve site ayarlarını içerebilir.
Geçici olarak yükleme yapmanız gerekiyorsa işlem tamamlandığında dosyayı hemen silin. En iyi uygulama, veritabanı yedeklerini web kök dizini dışında, sınırlı izinlere sahip bir klasörde tutmaktır.
.env, config.php, settings.php veya özel bağlantı dosyaları çoğu projede kritik bilgiler barındırır. Veritabanı kullanıcı adı, parola, SMTP hesabı, API anahtarı ve gizli token gibi değerler bu dosyalarda yer alabilir.
WordPress için wp-config.php dosyası bazı sunucu yapılandırmalarında public_html dışına alınabilir. Ancak bunu yapmadan önce sisteminizin bu konumu desteklediğinden emin olun. Yanlış taşıma, sitenin beyaz ekran vermesine veya veritabanı bağlantı hatası üretmesine neden olabilir.
error_log, debug.log ve özel uygulama logları saldırganlar için değerli ipuçları içerebilir. Dosya yolları, sorgu hataları, eklenti isimleri ve sunucu bilgileri bu kayıtlarda görünebilir.
WordPress hata ayıklama kullanılıyorsa wp-content/debug.log dosyasının erişime açık olup olmadığı kontrol edilmelidir. Üretim ortamında hata gösterimi kapatılmalı, loglar ise public_html dışında saklanmalıdır.
.pem, .key, .crt, SSH anahtarları, ödeme sistemi anahtarları ve servis hesaplarına ait JSON dosyaları public_html içinde bulunmamalıdır. Bu tür dosyalar ele geçirilirse yalnızca web sitesi değil, bağlı servisler de risk altına girer.
Bu dosyalar için en düşük dosya izni prensibi uygulanmalı, yalnızca ilgili sistem kullanıcısının okuyabileceği şekilde konumlandırılmalıdır.
Dosyayı taşımadan önce uygulamanın ilgili dosyaya hangi yoldan eriştiğini kontrol edin. Mutlak yol kullanılıyorsa yeni konumla güncellenmesi gerekir. Göreli yollarla çalışan sistemlerde taşıma sonrası beklenmeyen hatalar oluşabilir.
Taşıma işlemini canlı sitede yapıyorsanız önce tam yedek alın. Ardından dosyayı public_html dışına taşıyın, uygulama ayarını güncelleyin ve siteyi farklı sayfalarda test edin. Özellikle formlar, ödeme adımları, yönetim paneli ve medya yükleme işlemleri kontrol edilmelidir.
Dosyayı public_html dışına almak önemli bir güvenlik katmanı sağlar; ancak tek başına yeterli değildir. Dosya izinleri gereğinden genişse aynı sunucudaki farklı süreçler veya hatalı yapılandırılmış uygulamalar risk oluşturabilir.
755, dosyalar için 644 izinleri tercih edilir.backup-final.zip, site.sql gibi tahmin edilebilir ifadeler kullanılmamalıdır.WordPress kullanan ekipler için hızlı bir denetim, pek çok riski erken aşamada azaltır. public_html içinde eski kurulum klasörleri, gereksiz arşivler, dışa aktarılmış veritabanları ve test amaçlı bırakılmış PHP dosyaları aranmalıdır.
Özellikle ajans veya geliştirici değişikliği sonrası bu kontrol daha önemlidir. Geçici dosyalar çoğu zaman işlem bittikten sonra unutulur. Düzenli denetim, hosting paneli üzerinden dosya yöneticisiyle yapılabileceği gibi SSH erişimi olan yapılarda komut satırıyla da gerçekleştirilebilir.
Bir dosyanın public_html içinde kalıp kalmaması gerektiğinden emin değilseniz şu soruyu sorun: Bu dosyanın ziyaretçi tarafından doğrudan açılması gerekiyor mu? Cevap hayırsa dosya web erişimine kapalı bir alanda durmalıdır. Tema görselleri, CSS, JavaScript ve medya dosyaları erişilebilir olabilir; ancak yedekler, yapılandırmalar, loglar ve kimlik bilgileri bu kapsama girmez.
Kurumsal sitelerde bu yaklaşım yalnızca teknik bir tercih değil, veri güvenliği ve operasyonel sorumluluk meselesidir. Dosya yerleşimi doğru planlandığında hem olası veri sızıntıları azalır hem de sunucu yönetimi daha öngörülebilir hale gelir.