Veritabanı şifresi uygulama dosyalarında nasıl güvenli tutulur?

Veritabanı şifresini uygulama dosyalarında güvenli tutmak için ortam değişkenleri, dosya izinleri, .env yönetimi ve sunucu kontrollerinde dikkat edilmesi gerekenler.

Reklam Alanı

Veritabanı şifresi, bir uygulamanın en kritik erişim bilgilerinden biridir. Bu bilginin yanlış yerde tutulması; veri sızıntısı, yetkisiz erişim, servis kesintisi ve itibar kaybı gibi ciddi risklere yol açabilir. Özellikle web uygulamalarında yapılandırma dosyaları, sürüm kontrol sistemleri ve sunucu izinleri birlikte değerlendirilmeden yapılan küçük bir hata, üretim ortamındaki tüm veritabanını savunmasız bırakabilir.

Veritabanı şifresi neden doğrudan dosyaya yazılmamalı?

Birçok projede veritabanı kullanıcı adı, şifre, host ve port bilgileri doğrudan config dosyalarına yazılır. Bu yöntem hızlı görünse de güvenlik açısından zayıftır. Dosya yanlışlıkla herkese açık dizine taşınabilir, yedek dosyalar indirilebilir durumda kalabilir veya kod deposuna gönderilebilir.

Özellikle ekip halinde geliştirilen projelerde, şifrenin kaynak kodla birlikte paylaşılması erişim kontrolünü zorlaştırır. Bir geliştiricinin hesabı ele geçirildiğinde sadece kod değil, üretim veritabanı bilgileri de risk altına girer. Bu nedenle hassas bilgiler uygulama kodundan ayrılmalı ve ortam bazlı yönetilmelidir.

En güvenli yaklaşım: ortam değişkenleri kullanmak

Veritabanı şifresini uygulama dosyalarında güvenli tutmanın en yaygın ve pratik yolu ortam değişkenleridir. Bu yöntemde şifre kodun içinde yer almaz; uygulama, çalıştığı ortamdan gerekli bilgiyi okur. Böylece geliştirme, test ve canlı ortam için farklı bilgiler kullanılabilir.

PHP tabanlı bir uygulamada temel yaklaşım şu şekilde olabilir:

$dbHost = getenv('DB_HOST');
$dbName = getenv('DB_NAME');
$dbUser = getenv('DB_USER');
$dbPass = getenv('DB_PASSWORD');

$pdo = new PDO(
    "mysql:host={$dbHost};dbname={$dbName};charset=utf8mb4",
    $dbUser,
    $dbPass,
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);

Bu yapıda dikkat edilmesi gereken nokta, ortam değişkenlerinin web üzerinden erişilebilen bir dosyada tutulmamasıdır. Paylaşımlı hosting kullanılıyorsa kontrol panelinin sunduğu ortam değişkeni yönetimi, cron ortamı veya güvenli yapılandırma alanları tercih edilmelidir.

.env dosyası kullanırken dikkat edilmesi gerekenler

Modern uygulamalarda .env dosyaları sık kullanılır. Bu dosyalar doğru yapılandırıldığında kullanışlıdır; ancak yanlış konumlandırıldığında ciddi risk oluşturur. .env dosyası public_html, www veya benzeri herkese açık dizinlerin içinde bulunmamalıdır.

Sürüm kontrolüne eklemeyin

.env dosyasının Git gibi sürüm kontrol sistemlerine gönderilmesi en sık yapılan hatalardan biridir. Projede mutlaka .gitignore dosyası bulunmalı ve hassas yapılandırma dosyaları hariç tutulmalıdır. Bunun yerine .env.example gibi örnek bir dosya oluşturulabilir. Bu örnek dosyada gerçek şifreler değil, hangi değişkenlerin gerekli olduğunu gösteren boş değerler yer almalıdır.

Dosya izinlerini daraltın

Linux tabanlı bir sunucu üzerinde yapılandırma dosyalarının izinleri gereğinden geniş olmamalıdır. Örneğin sadece uygulamayı çalıştıran kullanıcı tarafından okunabilir olması yeterlidir. Genel okuma izni verilen dosyalar, aynı sunucuda bulunan farklı kullanıcılar veya hatalı çalışan servisler tarafından okunabilir.

WordPress projelerinde veritabanı şifresi nasıl korunur?

WordPress’te veritabanı bilgileri genellikle wp-config.php dosyasında yer alır. Bu dosya web kök dizininde bulunsa da doğru sunucu yapılandırmasıyla doğrudan görüntülenemez. Yine de ek önlemler almak gerekir.

  • wp-config.php dosyasını mümkünse bir üst dizine taşıyın: WordPress, uygun yapılarda bu dosyayı kök dizinin bir üst seviyesinden okuyabilir.
  • Dosya izinlerini kontrol edin: Gereksiz yazma izinlerini kaldırın ve dosyanın sadece ihtiyaç duyulan kullanıcı tarafından okunmasını sağlayın.
  • Yedek dosya bırakmayın: wp-config.php.bak, config-old.php veya benzeri dosyalar web üzerinden erişilebilir hale gelebilir.
  • Veritabanı kullanıcısını sınırlandırın: Uygulamanın ihtiyaç duymadığı yetkileri vermeyin. Sadece gerekli veritabanı üzerinde gerekli işlemlere izin tanıyın.

Şifre yönetiminde güçlü politika oluşturmak

Güvenli saklama kadar şifrenin kalitesi de önemlidir. Veritabanı şifresi tahmin edilebilir kelimelerden, firma adından, alan adından veya kısa sayı dizilerinden oluşmamalıdır. Uzun, rastgele ve benzersiz şifreler kullanılmalıdır.

Canlı ortamda kullanılan şifreler geliştirici bilgisayarlarında, mesajlaşma uygulamalarında veya düz metin belgelerde paylaşılmamalıdır. Kurumsal yapılarda parola kasası kullanmak, yetkili kişileri sınırlamak ve erişim kayıtlarını izlemek daha güvenli bir model sağlar.

Sunucu tarafında alınması gereken ek önlemler

Uygulama dosyaları ne kadar iyi korunursa korunsun, sunucu yapılandırması zayıfsa risk devam eder. Veritabanı mümkünse dış dünyaya kapalı olmalı, yalnızca uygulama sunucusundan bağlantı kabul etmelidir. Uzak bağlantı gerekiyorsa IP kısıtlaması, VPN veya güvenli tünel tercih edilmelidir.

Hata mesajları da kontrol edilmelidir. Üretim ortamında ayrıntılı bağlantı hataları, dosya yolları veya kullanıcı bilgileri ekrana basılmamalıdır. Log kayıtları ise herkese açık dizinlerde tutulmamalı ve düzenli olarak izlenmelidir.

Pratik kontrol listesi

  • Veritabanı şifresini doğrudan kaynak koda yazmayın.
  • .env ve config dosyalarını public dizinin dışında tutun.
  • Hassas dosyaları Git deposuna göndermeyin.
  • Dosya izinlerini en dar yetki prensibine göre ayarlayın.
  • Her ortam için farklı veritabanı bilgileri kullanın.
  • Paylaşımlı hosting ortamında panel, dosya izinleri ve yedekleme ayarlarını ayrıca kontrol edin.
  • Şifre değişimi gerektiğinde uygulama kesintisini azaltmak için bakım planı hazırlayın.

Bu kontroller düzenli uygulandığında veritabanı şifresi yalnızca gerekli servisler tarafından okunur, geliştirici süreçleri daha güvenli hale gelir ve olası bir dosya sızıntısında saldırganın doğrudan veritabanına erişme ihtimali belirgin şekilde azalır.

Kategori: Genel
Yazar: Egemen
İçerik: 653 kelime
Okuma Süresi: 5 dakika
Zaman: 1 gün önce
Yayım: 04-07-2026
Güncelleme: 04-07-2026