TR / EN

wp-config.php Dosyasında Güvenlik ve Parola Yönetimi

Bir WordPress bağlantı sorunu incelenirken en hızlı yöntem olarak yapılandırma dosyasını açıp veritabanı parolasını ekip sohbetine göndermek önerilmişti. Bu yöntem sorunu kısa süreli çözebilirdi, fakat kalıcı bir sır birden fazla kontrolsüz kopyaya dönüşecekti. Asıl ihtiyaç parolayı “bulmak” değil, yetkili kişinin güvenli biçimde doğrulaması ve gerekiyorsa izlenebilir şekilde yenilemesiydi.

21 Temmuz 2026 tarihli çalışmada `wp-config.php` dosyasını yalnızca bağlantı ayarı olarak değil, WordPress güven sınırlarından biri olarak ele aldık. Dosya yolu, web sunucusu kullanıcısı, dağıtım yöntemi, yedek ve destek süreçleri birlikte incelendi. Aşağıdaki yaklaşım gerçek parola veya altyapı ayrıntısı paylaşmadan savunmacı işletim prensiplerine odaklanır.

Sorunun ortaya çıkışı

Site veritabanına bağlanamıyor, ancak ekipte hangi hesabın kullanıldığına dair güncel kayıt bulunmuyordu. Dosyaya erişebilen herkes parolayı okuyabiliyor, bazı eski yedeklerde de yapılandırmanın kopyaları yer alıyordu. Önceki bir hata ayıklama sırasında debug kayıtları web dizininde bırakılmıştı. Tek bağlantı sorunu, sır yaşam döngüsü ve dosya yönetişimi eksiklerini görünür hale getirdi.

Dosyanın sahipliği geçmiş kurulumlardan dolayı belirsizdi. Web sunucusunun yazma yetkisi bulunması güncellemeyi kolaylaştırıyor gibi görünse de uygulama açığında yapılandırmanın değiştirilmesi riskini artırıyordu. Öte yandan izinleri düşünmeden aşırı daraltmak siteyi erişilemez yapabilirdi. Doğru model işletim sistemi kullanıcısı, PHP çalışma biçimi ve dağıtım sorumluluğuna göre kurulmalıydı.

İlk belirtiler ve yanlış varsayımlar

İlk yanlış varsayım dosyanın web tarayıcısından normalde görüntülenememesinin yeterli koruma olduğuydu. Yanlış sunucu yapılandırması, yedek uzantısı, dizin listeleme, yerel kullanıcı veya ele geçirilmiş eklenti farklı erişim yolları oluşturabilir. İkinci varsayım dosya izninde tek bir sayısal değerin her sunucu için doğru olduğuydu. Sahiplik ve servis modeli bilinmeden kopyalanan izin önerileri kesinti ya da gereksiz açıklık yaratabilir.

Salt anahtarlarının veritabanı parolasıyla aynı işlevi gördüğü de karıştırılıyordu. WordPress authentication salts mevcut oturum çerezlerinin güvenliğini etkiler; değiştirilmeleri kullanıcı oturumlarını geçersiz kılar. Veritabanı parolasının rotasyonu ise MySQL hesabı ile yapılandırmanın eş zamanlı güncellenmesini gerektirir. İki işlem farklı etki ve geri dönüş planlarıyla yürütülmelidir.

Teknik analiz

Dosyanın gerçek konumu, sembolik bağlantıları, sahibi, grubu ve erişim listeleri doğrulandı. Web sunucusunun dosyayı okuması gerekiyor, fakat olağan çalışma sırasında değiştirmesi gerekmiyordu. Üst dizin izinleri de kontrol edildi; yalnızca dosyayı daraltıp dizini geniş bırakmak yeterli değildir. Web sunucusu yapılandırmasının `.bak`, `.old` veya editör geçici dosyalarını sunmadığı doğrulandı.

Yapılandırmada veritabanı kimliği, salt anahtarları, debug ayarı ve tablo öneki gibi alanlar envantere alındı; değerler rapora kopyalanmadı. Kaynak kod deposu geçmişi ve dağıtım paketi sır sızıntısı açısından kontrol edildi. Debug logunun konumu, erişimi ve saklama süresi belirlendi. Yedeklerin dosyayı içerip içermediği ve kimlerin yedek ortamına erişebildiği ayrıca değerlendirildi.

# Değerleri ekrana dökmeden yalnızca sahiplik ve izinleri inceleyin.
stat /guvenli/yol/wp-config.php

# PHP sözdizimini kontrol edin; dosya içeriğini paylaşmayın.
php -l /guvenli/yol/wp-config.php

# İzin değişikliği vermeden önce web/PHP çalışma kullanıcısını doğrulayın.
# Ortama özel sahiplik bilinmeden körlemesine chmod/chown uygulamayın.

Uygulanan çözüm veya önerilen mimari

Dosyanın sahibi dağıtım sorumluluğundaki ayrı kullanıcı, okuma grubu ise yalnızca PHP servisinin gerekli kimliği olacak şekilde tasarlandı. Web sürecine yazma verilmedi. Kesin izin değeri ortama göre test edilerek belirlendi ve yapılandırma web kökü dışında desteklenen konuma taşınabiliyorsa bu seçenek değerlendirildi. Sunucu, yedek ve geçici uzantılı yapılandırma dosyalarını yayınlamayacak biçimde sertleştirildi.

Parolalar kurumun secret yönetim sürecinde üretildi; dosyaya dağıtım sırasında güvenli kanaldan verildi ve depoya yazılmadı. Rotasyonda yeni sınırlı hesap oluşturma, yapılandırmayı atomik güncelleme, sağlık testi ve eski hesabı iptal etme adımları uygulandı. Salt yenilemesi ayrı değişiklik olarak kullanıcı oturum etkisiyle planlandı. Erişim ve değişiklikler kişisel sırları göstermeden denetim kaydına alındı.

Alternatifler ve karar gerekçesi

Sırları doğrudan `wp-config.php` içinde tutmak WordPress’in yaygın ve basit modelidir; dosya güvenliği kritik hale gelir. Ortam değişkenleri veya harici secret manager merkezi rotasyon ve dağıtım sağlayabilir, fakat PHP sürecinde değerin nasıl sunulduğu, hata çıktıları ve eklenti uyumluluğu incelenmelidir. Yalnızca farklı yere taşımak, erişim kontrolleri değişmiyorsa sihirli bir koruma sağlamaz.

Dosyayı tamamen değişmez yapmak izinsiz değişikliği azaltabilir; otomasyon, güncelleme ve acil müdahale sürecini zorlaştırabilir. Web sunucusuna yazma vermek ise kolaylık karşılığında olay etkisini büyütür. Kontrollü dağıtım hesabı, salt okunur uygulama erişimi ve izlenen değişiklik süreci kurumun işletim biçimine daha uygun bulundu. Karar, geri dönüş testiyle doğrulandı.

Güvenlik ve operasyonel riskler

Dosya içeriğini ticket, ekran görüntüsü veya sohbetle paylaşmak geri alınması zor kopyalar üretir. Bir sırın açığa çıktığından şüpheleniliyorsa mesajı silmek yeterli değildir; parola ve ilgili anahtarlar planlı biçimde yenilenmelidir. Kaynak depo geçmişindeki sır da yalnızca son commit’ten kaldırılınca yok olmaz. Erişim anahtarları önce iptal edilmeli, geçmiş temizliği kontrollü yürütülmelidir.

Yanlış sahiplik ya da izin değişikliği site kesintisine yol açabilir. Önce mevcut durum kaydedilmeli, ikinci yönetim oturumu korunmalı ve sağlık testi hazırlanmalıdır. Debug açık kalırsa kişisel veri, sorgu veya dosya yolu loglara düşebilir. Yedekler şifrelenmeli, erişimleri sınırlandırılmalı ve saklama sonlarında güvenli silinmelidir. Dosya bütünlüğü uyarıları yetkili dağıtımlarla ilişkilendirilmelidir.

Çıkarılan Dersler

Kontrol Listesi