Public dizinde unutulan geliştirme dosyaları veritabanı şifreleri, API anahtarları, yedekler ve sunucu bilgilerini sızdırabilir. Riskleri ve önlemleri öğrenin.
Geliştirme sürecinde kullanılan dosyalar çoğu zaman geçici görülür; ancak bu dosyalar web sitesinin public dizininde unutulduğunda ciddi veri sızıntılarına yol açabilir. Public dizin, internetten doğrudan erişilebilen alandır. Bu nedenle test amaçlı bırakılan bir yedek, yapılandırma dosyası, log çıktısı veya sürüm kontrol kalıntısı yalnızca geliştiricinin değil, kötü niyetli kişilerin de erişebileceği bir kaynağa dönüşebilir.
Özellikle kurumsal sitelerde domain, uygulama ve hosting katmanları birlikte değerlendirilmelidir. Çünkü tek bir açık dosya; veritabanı bilgilerini, API anahtarlarını, kullanıcı kayıtlarını veya sunucu yapısını görünür hale getirebilir. Sorun genellikle karmaşık bir saldırıdan değil, yanlış dizin yönetimi ve eksik dağıtım kontrolünden kaynaklanır.
Web sunucuları public dizin altındaki dosyaları isteklere cevap verecek şekilde yayınlar. Bir dosya çalıştırılmasa bile indirilebilir durumdaysa içeriği görüntülenebilir. Örneğin .env, config.php.bak, database.sql veya error.log gibi dosyalar tarayıcı üzerinden açılabilir ya da otomatik tarama araçlarıyla bulunabilir.
Riskin büyüklüğü dosyanın türüne göre değişir. Bazı dosyalar yalnızca teknik ipucu verirken, bazıları doğrudan sistem erişimi sağlayabilecek bilgileri içerir. Bu nedenle “nasıl olsa test dosyası” yaklaşımı güvenli değildir.
Yapılandırma dosyaları genellikle veritabanı host adresi, port bilgisi, kullanıcı adı, parola ve tablo ön eki gibi kritik veriler içerir. Bu bilgiler ele geçirilirse saldırgan veritabanına doğrudan bağlanmayı deneyebilir. Bağlantı dışarıya kapalı olsa bile bu bilgiler, başka açıklarla birlikte kullanıldığında saldırıyı kolaylaştırır.
Ödeme sistemleri, e-posta servisleri, SMS sağlayıcıları, harita servisleri ve bulut depolama çözümleri için kullanılan API anahtarları geliştirme dosyalarında bulunabilir. Bu anahtarların sızması; izinsiz işlem yapılmasına, kota tüketimine, müşteri verilerinin çekilmesine veya maliyet oluşmasına neden olabilir.
backup.zip, site-old.tar.gz, db.sql gibi dosyalar en kritik riskler arasındadır. Bu dosyaların içinde kullanıcı e-postaları, parola hashleri, sipariş kayıtları, adres bilgileri ve yönetici hesapları yer alabilir. Yedek dosyalarının public alana alınması yalnızca geçici bir işlem olsa bile indekslenme veya otomatik taranma riski vardır.
Geliştirici notları, eski PHP dosyaları, test endpointleri veya yorum satırlarında bırakılmış bilgiler uygulamanın nasıl çalıştığını gösterebilir. Saldırganlar bu bilgilerle yetkilendirme kontrollerini, gizli URL yapılarını, admin panellerini veya zayıf noktaları daha hızlı analiz eder.
Log dosyaları çoğu zaman tam dosya yollarını, PHP hatalarını, sorgu çıktılarının parçalarını ve istemci IP adreslerini içerir. Bu bilgiler tek başına erişim sağlamasa da saldırganın sunucu yapısını anlamasına yardımcı olur. Özellikle hata ayıklama modu açık bırakılmış sistemlerde risk artar.
Bu dosyaların bazıları teknik ekip için masum görünebilir. Ancak saldırgan açısından her biri sistem hakkında ipucu veren bir parçadır. Parçalar birleştiğinde daha büyük bir güvenlik açığı ortaya çıkabilir.
Canlıya alma sürecinde yalnızca çalışması gereken dosyaların public dizine taşındığından emin olun. Geliştirme, test, yedek ve dokümantasyon dosyaları ayrı bir dizinde tutulmalı; mümkünse web üzerinden erişilemeyen alanlarda saklanmalıdır.
Veritabanı ve servis bilgileri içeren dosyalar public dizinin dışında tutulmalıdır. Uygulama bu dosyaları sunucu içinden okuyabilir; ancak tarayıcıdan erişilebilir olmamalıdır. Bu yapı, modern hosting yönetiminde temel güvenlik uygulamalarından biridir.
Dizin listeleme açık olduğunda, index dosyası bulunmayan klasörlerdeki tüm dosyalar listelenebilir. Bu durum saldırganın tahmin yürütmesine gerek bırakmadan dosya isimlerini görmesini sağlar. Web sunucusu yapılandırmasında directory listing kapalı olmalıdır.
Gereğinden geniş yazma ve okuma izinleri, küçük bir hatanın etkisini büyütür. Dosyalar için minimum yetki prensibi uygulanmalı, yazılabilir dizinler sınırlandırılmalı ve hassas dosyaların herkese açık okunabilir olmamasına dikkat edilmelidir.
Önce ilgili dosyaları public dizinden kaldırın veya erişime kapatın. Ardından dosyanın içeriğinde yer alan tüm şifreleri, API anahtarlarını ve tokenları değiştirin. Yalnızca dosyayı silmek yeterli değildir; çünkü bilgi daha önce indirilmiş, önbelleğe alınmış veya loglara yansımış olabilir.
Sonraki adımda erişim kayıtları incelenmelidir. Hangi IP adreslerinin dosyaya ne zaman eriştiği, indirmenin gerçekleşip gerçekleşmediği ve ardından şüpheli oturum açma denemeleri olup olmadığı kontrol edilmelidir. Eğer veritabanı dökümü veya müşteri bilgisi içeren bir dosya sızdıysa, hukuki ve operasyonel bildirim süreçleri de değerlendirilmelidir.
Canlı ortam ile geliştirme ortamını net biçimde ayırmak, bu tür hataların büyük bölümünü önler. Geliştiricilerin kullandığı test dosyaları otomatik dağıtım sürecine dahil edilmemeli, versiyon kontrolünde hassas bilgi tutulmamalı ve her yayın öncesi dosya kapsamı gözden geçirilmelidir.
Ayrıca düzenli güvenlik taraması yapılması, beklenmeyen dosyaların erken fark edilmesini sağlar. Basit bir kontrol bile public dizinde kalan eski arşivleri, log dosyalarını veya yanlışlıkla yüklenmiş yapılandırma dosyalarını tespit edebilir. Bu yaklaşım, domain yönetiminden uygulama dağıtımına kadar tüm web varlıklarında daha güvenli bir işletim modeli oluşturur.