wp-config.php güvenlik açıkları: WordPress güvenliğini güçlendirme

wp-config.php vi ile açıkken aynı klasörde oluşan takas kopyası (.swp) web adresinden doğrudan açılabilmişti. Bunu 2026-09-13'te kendi sunucumda bizzat gördüm; o kopyada veritabanı şifresi ve tüm güvenlik anahtarları vardı.
wp-config.php güvenliği için aşağıdaki altı maddeyi yukarıdan başlayarak sırayla kontrol edin.
1️⃣ wp-config.php açığa çıkarsa ne olur
wp-config.php'de veritabanı adı, kullanıcısı ve şifresiyle birlikte giriş çerezlerini şifreleyen 8 güvenlik anahtarı bulunur.

Bu dosya dışarıya açılırsa saldırgan veritabanına doğrudan bağlanabilir ya da güvenlik anahtarlarıyla oturumları taklit ederek yönetici yetkisini ele geçirebilir.
2️⃣ Dosya iznini 600 ile sınırlama
WordPress genellikle klasörleri 755, dosyaları 644 yapar; ancak wp-config.php yalnızca sahibinin okuyup yazabildiği 600 ile sınırlandırılır. Komut, test sitesi testpilotweb.com'da çalıştırıldı.
chmod 600 /home/testpilotweb/www/wp-config.php
stat -c '%a %U' /home/testpilotweb/www/wp-config.php
600 testpilotwebPHP'nin dosya sahibinden farklı bir hesapla çalıştığı sunucularda 600 izniyle WordPress bu dosyayı okuyamaz ve site açılmaz. testpilotweb.com'da PHP-FPM dosya sahibiyle aynı hesapla çalıştığı için değişiklikten sonra da site normal açıldı.
SSH kullanamadığınız paylaşımlı hostingde aynı değeri FTP programının veya cPanel Dosya Yöneticisi'nin izin menüsünden ayarlarsınız.
3️⃣ Erişimi web sunucusunda engelleme
İzinleri değiştiremiyorsanız ya da bir katman daha eklemek istiyorsanız web sunucusunun wp-config.php isteklerini tamamen reddetmesini sağlayın.
🔲 Apache (.htaccess)
<Files wp-config.php>
Require all denied
</Files>Eski yazılarda sık görülen [order allow,deny] ve [deny from all], Apache 2.2 sözdizimidir. Apache 2.4'te yalnızca uyumluluk modülü (mod_access_compat) açıksa çalışır.
🔲 nginx
nginx .htaccess okumadığı için sunucu yapılandırma dosyasına [location] kuralı eklenir; benim sunucum da aynı şekilde 403 döndürür.
location ~* /wp-config(-sample)?\.php$ {
deny all;
}Düzenli ifadedeki noktayı [\.] olarak kaçışlayın. Noktayı olduğu gibi bırakırsanız [/wp-config-php-temel-ayarlar/] gibi yazı adresleri de engellenir; bende de aynı hata yüzünden bir yazı bir keresinde 403 vermişti.
4️⃣ Düzenleyici geçici dosyalarını ve yedek dosyaları engelleme
Bir dosya vi ile açıkken oluşan [.swp] kopyası ve düzenlemeden önce bırakılan [.bak] kopyası PHP olarak çalışmaz; olduğu gibi düz metin olarak indirilir.
nginx'te iki tür birlikte engellenir; [444], yanıt vermeden bağlantıyı kapatan nginx'e özgü bir koddur.
location ~ \.sw[opx]$ { return 444; }
location ~* (\.(bak|orig|old|save)|_ori|\.bak\.[0-9]+)$ { return 444; }5️⃣ Web kökünün bir üst klasörüne taşıma
WordPress, wp-config.php'yi önce kurulum klasöründe arar; orada yoksa hemen üstteki klasörden yükler. Dosyayı [public_html] dışına bir üst klasöre taşırsanız web adresiyle ulaşılamaz hâle gelir.
Ancak üstteki klasörde başka bir WordPress kurulumunun [wp-settings.php] dosyası varsa WordPress o klasördeki wp-config.php'yi okumaz. Taşıdıktan sonra sitenin ve yönetim ekranının açıldığını hemen kontrol edin.
6️⃣ Dosya düzenlemeyi kapatma
Bu ayar, WordPress yönetim panelindeki ‘Tema dosya düzenleyici’ ve ‘Eklenti dosya düzenleyici’ menülerini kapatır. Saldırgan yönetici yetkisini ele geçirse bile web üzerinden kötü amaçlı kod eklenmesini engelleyen en güçlü savunmalardan biridir.
define('DISALLOW_FILE_EDIT', true); 7️⃣ wp-config-sample.php'yi silme
wp-config-sample.php kurulumda kullanılan örnek bir dosya olduğundan kurulum bittikten sonra silebilirsiniz. Hassas bilgi içermez ama saldırganların varsayılan yolda aradığı bir dosya olduğu için bırakmanın bir anlamı yoktur.
Örnek dosyanın gerçek satırlarını ve her öğenin anlamını wp-config.php temel ayarları yazısında anlattım. Dosyayı silmeyip bırakırsanız yukarıdaki nginx kuralının [(-sample)?] kısmı bu dosyayı da engeller.
ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.